Untitled
unknown
plain_text
a year ago
3.8 kB
7
Indexable
url.py from django.urls import path from django.contrib import admin from inventoryapp.views import ( InventoryItemListAPIView, InventoryItemCategoryListAPIView, InventoryItemSortAPIView, InventoryItemEditAPIView, ) urlpatterns = [ path('admin/', admin.site.urls), path('inventory/items/', InventoryItemListAPIView.as_view(), name='inventory_items_list'), path('inventory/items/query/<str:category>/', InventoryItemCategoryListAPIView.as_view(), name='inventory_items_by_category'), path('items/query/<str:category>/', InventoryItemCategoryListAPIView.as_view(), name='inventory_items_by_category'), path('items/sort/', InventoryItemSortAPIView.as_view(), name='inventory_items_sort'), path('inventory/items/<int:item_id>/', InventoryItemEditAPIView.as_view(), name='inventory_items_edit_delete'), ] views.py from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from inventoryapp.models import Inventory from inventoryapp.serializer import InventorySerializer class InventoryItemListAPIView(APIView): def get(self, request, *args, **kwargs): items = Inventory.objects.all() serializer = InventorySerializer(items, many=True) return Response(serializer.data, status=status.HTTP_200_OK) def post(self, request, *args, **kwargs): serializer = InventorySerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class InventoryItemCategoryListAPIView(APIView): def get(self, request, category, *args, **kwargs): items = Inventory.objects.filter(category=category) serializer = InventorySerializer(items, many=True) return Response(serializer.data, status=status.HTTP_200_OK) class InventoryItemSortAPIView(APIView): def get(self, request, *args, **kwargs): items = Inventory.objects.all().order_by('-price') serializer = InventorySerializer(items, many=True) return Response(serializer.data, status=status.HTTP_200_OK) class InventoryItemEditAPIView(APIView): def put(self, request, item_id, *args, **kwargs): try: item = Inventory.objects.get(id=item_id) except Inventory.DoesNotExist: return Response({'error': 'Item not found'}, status=status.HTTP_404_NOT_FOUND) serializer = InventorySerializer(instance=item, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def delete(self, request, item_id, *args, **kwargs): try: item = Inventory.objects.get(id=item_id) item.delete() return Response(status=status.HTTP_204_NO_CONTENT) except Inventory.DoesNotExist: return Response({'error': 'Item not found'}, status=status.HTTP_404_NOT_FOUND) serializer.py from rest_framework import serializers from inventoryapp.models import Inventory class InventorySerializer(serializers.ModelSerializer): class Meta: model = Inventory fields = 'all' models.py from django.db import models class Inventory(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=255) category = models.CharField(max_length=100) price = models.IntegerField() quantity = models.IntegerField() barcode = models.IntegerField(unique=True) def str(self): return self.name
Editor is loading...
Leave a Comment