Обновление стоимости запасов после выставления счета за товар в Django

Я работаю над проектом по управлению запасами аптеки. У меня две модели Medicine и Medicine Sale, код приведен ниже. Я хочу обновить инвентарную стоимость каждого лекарства, когда я генерирую продажу. Например, если я продаю 3 количества продукта, это количество должно быть удалено из инвентарной стоимости этого продукта. Кто-нибудь может мне помочь?

Вот файл models.py, в котором есть оба класса Medicine и Medicine Sale

class Medicine(models.Model):

medicine_choices = (
    ('Tablet', 'Tablet'),
    ('Syrup', 'Syrup'),
    ('Granules', 'Granules'),
    ('Capsules', 'Capsules'),
    ('Injection', 'Injection'),
    ('Supplements', 'Suplements'),
)

year_choices = (
    ('2021', '2021'),
    ('2022', '2022'),
    ('2023', '2023'),
    ('2024', '2024'),
    ('2025', '2025'),
    ('2026', '2026'),
)
medicine_name = models.CharField(max_length=255)
medicine_type = models.CharField(choices=medicine_choices, max_length=100)
stock_value = models.IntegerField()
price = models.IntegerField()
expiry_date = models.CharField(choices=year_choices, max_length=100)


def __str__(self):
    return self.medicine_name

class MedicineSale(models.Model):

medicine1 = models.ForeignKey(Medicine, related_name = 'first_medicine', on_delete=CASCADE)
qty_no_1 = models.FloatField()
price_no_1 = models.FloatField()
total_amt1 =  models.FloatField(editable=False, default=0)

medicine2 = models.ForeignKey(Medicine, related_name = 'second_medicine', on_delete=CASCADE, blank=True)
qty_no_2 = models.FloatField()
price_no_2 = models.FloatField()
total_amt2 =  models.FloatField(editable=False, default=0)

medicine3 = models.ForeignKey(Medicine, related_name = 'third_medicine', on_delete=CASCADE, blank=True)
qty_no_3 = models.FloatField()
price_no_3 = models.FloatField()
total_amt3 =  models.FloatField(editable=False, default=0)

medicine4 = models.ForeignKey(Medicine, related_name = 'fourth_medicine', on_delete=CASCADE, blank=True)
qty_no_4 = models.FloatField()
price_no_4 = models.FloatField()
total_amt4 =  models.FloatField(editable=False, default=0)

total = models.FloatField(editable=False, default=0)
sale_date = models.DateTimeField(auto_now_add=True)

def save(self,*args,**kwargs):
    self.total_amt1 = self.qty_no_1*self.price_no_2
    self.total_amt2 = self.qty_no_2*self.price_no_2
    self.total_amt3 = self.qty_no_3*self.price_no_3
    self.total_amt4 = self.qty_no_4*self.price_no_4
    self.total = self.total_amt1+self.total_amt2+self.total_amt3+self.total_amt4
    super(MedicineSale, self).save(*args,**kwargs)

Вот файл admin.py

class MedicineAdmin(admin.ModelAdmin): list_display = ('medicine_name', 'medicine_type', 'stock_value', 'price', 'expiry_date') list_display_links = ('название_медицины',) search_fields = ('medicine_name', 'medicine_type', 'expiry_date') list_filter = ('medicine_type', 'expiry_date')

class MedicineSaleAdmin(admin.ModelAdmin): list_display = ('id', 'total', 'sale_date' )

admin.site.register(Medicine, MedicineAdmin)

admin.site.register(MedicineSale,MedicineSaleAdmin)

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