Обновить/удалить записи в БД через Django


Отправляю на сервер данные следующего вида:
    [{
        "id": 36,
        "id_cards": 1,
        "count": 1,
        "foil": 2,
        "language": 2,
        "id_user": 1
    },
    {
        "id": 37,
        "id_cards": 324,
        "count": 2,
        "foil": 0,
        "language": 0,
        "id_user": 1
    },
    {
        "id": 38,
        "id_cards": 324,
        "count": 2,
        "foil": 0,
        "language": 1,
        "id_user": 1
    }]

Сохранять я их уже научился в БД. Как теперь при таких же входных данных обновить/удалить записи в БД?
Модель:

class User_cards(models.Model):
    id_user = models.ForeignKey(User, on_delete=models.CASCADE, )
    id_cards = models.IntegerField()
    count = models.IntegerField(default=0)
    foil = models.IntegerField(blank=True)
    language = models.IntegerField(blank=True)

    def __str__(self):
        return self.name

    class Meta:
        unique_together = ('id_user', 'id_cards', 'foil', 'language')

Сериализер:

class CardsUserAddSerializers(serializers.ModelSerializer):
    class Meta:
        model = User_cards
        fields = ('id_user', 'id_cards', 'count', 'foil', 'language')

Вьюха:

class CardsUserAdd(generics.CreateAPIView):
    serializer_class = CardsUserAddSerializers

    def post(self, request, format=None):
        data = request.data
        print(data)
        print("Добавили")
        serializer = CardsUserAddSerializers(many=True, data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        print(serializer.errors)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        
    def put(self, request):
        data = request.data
        print(data)
        print("Добавили")
        serializer = CardsUserAddSerializers(many=True, data=data)
        return Response(data)

    def delete(self, request):
        data = request.data
        print(data)
        print("Удалили")
        serializer = CardsUserAddSerializers(many=True, data=data)
        return Response(data)

Твоя вьюха наследуется от CreateAPIView который подразумевает долько создание, а тебе уже нужен GenericAPIView + миксины. Или сразу ModelViewSet.

Вернуться на верх