Обновление стоимости запасов после выставления счета за товар в 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)