Как обновить значение столбца во внешней таблице в 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.