Как обновить значение внешнего ключа django
Допустим, у меня есть следующие модели (models.py):
class stockList(models.Model):
product_name = models.CharField(max_length=255, null=True, unique=True)
product_image = models.ImageField(upload_to='photos')
product_type = models.CharField(max_length=50, null=True)
product_description = models.TextField(null=True)
quantity_in_store = models.IntegerField(null=True)
location = models.CharField(max_length=50, null=True)
class stockOut(models.Model):
staff_name = models.ForeignKey("staff", on_delete=models.CASCADE, null=True)
stock = models.ForeignKey("stockList", on_delete=models.CASCADE, null=True)
shipping_qty = models.IntegerField(null=True)
shipping_company = models.CharField(max_length=255, null=True)
Прежде всего, мне нужно сделать вычитание между quantity_in_store (из моделей stockList) и shipping_qty (из моделей stockout) и получить конечное количество, которое осталось в магазине. Однако, я получил конечное количество, но я хотел бы обновить значение конечного количества в quantity_in_store(from stockList models) Как мне это сделать? Спасибо
admin models:
class stockout(admin.ModelAdmin):
list_display = ["staff_name", "stock", "shipping_qty", "shipping_company"]
def save_model(self, request, obj, form, change):
stock = obj.stock
shipping_qty = obj.shipping_qty
if shipping_qty and stock.quantity_in_store:
obj.stock.quantity_in_store = stock.quantity_in_store - shipping_qty
super().save_model(request, obj, form, change)
Хотя проверка количества при сохранении - плохая практика, это должно быть сделано при валидации, вы можете использовать ваш код:
def save_model(self, request, obj, form, change):
stock = obj.stock
shipping_qty = obj.shipping_qty
if shipping_qty and stock.quantity_in_store:
obj.stock.quantity_in_store = stock.quantity_in_store - shipping_qty
# don't forget to save stock after change quantity
obj.stock.save()
super().save_model(request, obj, form, change)