Как обновить значение столбца во внешней таблице в django

У меня есть 2 таблицы, одна из которых является внешней таблицей для другой (внешний ключ). Я хочу уменьшить значение столбца количества товаров в иностранной таблице на основе значения столбца количества в родительской таблице. Ниже приведен мой код

model.py

from django.db import models

# Create your models here.

PAYMENT_METHOD = (
    ('CASH', 'cash'),
    ('TRANSFER', 'transfer'),
)

class ItemSold(models.Model):
    item_name = models.CharField(max_length=80)
    quantity = models.IntegerField()

    def __str__(self):
        return self.item_name


class DailySales(models.Model):
    customername = models.CharField(max_length=100)
    itemsold = models.ForeignKey(ItemSold, related_name="soldItem", on_delete=models.CASCADE)
    quantity = models.IntegerField()
    rate = models.IntegerField()
    totalprice = models.IntegerField(default=0)
    datesold = models.DateTimeField(auto_now_add=True, auto_now=False)
    paymentmethod = models.CharField(max_length=40, choices=PAYMENT_METHOD, default=PAYMENT_METHOD[0][0])
    havepaid = models.BooleanField(default=False)
    datepaid = models.DateTimeField(auto_now_add=False, auto_now=True)

    class Meta:
        verbose_name_plural = 'Daily Sales'

    def __str__(self):
        return self.customername

    def save(self, *args, **kwargs):
        self.totalprice = self.rate * self.quantity
        super(DailySales, self).save(*args, **kwargs)

views.py

class DailySalesListView(generics.GenericAPIView):
    serializer_class = DailySalesSerializer
    queryset = DailySales.objects.all()
    name = 'Daily Sales List'
    filter_backends = (DjangoFilterBackend,)

    filterset_fields = ('customername','havepaid', 'datesold', 'itemsold', 'datepaid')

    def get(self, request):
        sales = self.filter_queryset(self.get_queryset())
        serializer = self.serializer_class(instance=sales, many=True)
        return Response(data=serializer.data, status=status.HTTP_200_OK)

    def post(self, request):
        data = request.data
        serializer = self.serializer_class(data=data)

        if serializer.is_valid():
            serializer.save()
            return Response(data=serializer.data, status=status.HTTP_201_CREATED)

        return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Я еще ничего не пробовал, не знаю, как это делается

Если я правильно вас понял, два поля модели quantity идентичны, в таком случае они оба не нужны. Вы можете сделать эту логику в вашем представлении с помощью get_query_context.

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