Как обновить значение внешнего ключа 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)
Вернуться на верх