首页 > 解决方案 > 从 django 字段中获取值并动态更改它

问题描述

我创建了两个模型,两个字段分别是数量和数量_给定,所以我想通过添加数量+给定数量的值来更改数量字段的值。例如,如果数量 = 4 且数量给定 = 8,则数量字段的新值将为 12。

这是我的模型的源代码

class Stock(models.Model):
    `name = models.CharField(max_length=30)`

    def __str__(self):
        return self.name


class Medicine(models.Model):
    stock = models.ForeignKey(Stock, on_delete=models.CASCADE)
    name = models.CharField(max_length=30)
    quantity = models.IntegerField()



    def __str__(self):
        return self.name


class MedicineGiven(models.Model):
    medicine = models.ForeignKey(Medicine, on_delete=models.CASCADE)
    quantity_given = models.IntegerField()

标签: django

解决方案


您可以在MedicineGiven中有一个方法,例如:

class MedicineGiven(models.Model):
    medicine = models.ForeignKey(Medicine, on_delete=models.CASCADE)
    quantity_given = models.IntegerField()
 
    @property
    def quantity(self):
        return self.quantity_given + int(self.medicine.quantity)

在您看来,您可以获得MedicineGiven的数量,例如:

medicine_given = MedicineGiven.objects.get(pk=id) # Just a example code
medicine_given.quantity 

编辑

如果要将数量保存在数据库中,则可以覆盖save()方法:

class MedicineGiven(models.Model):
    medicine = models.ForeignKey(Medicine, on_delete=models.CASCADE)
    quantity_given = models.IntegerField()
    

    def save(self, *args, **kwargs):
        quantity = self.quantity_given + int(self.medicine.quantity)  

        self.medicine.quantity = quantity
        self.medicine.save()

        super().save(*args, **kwargs)

推荐阅读