django - 从 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()
解决方案
您可以在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)
推荐阅读
- javascript - 删除javascript中字符串数组中的特殊字符
- c - __sync_fetch_and_add() 的信号安全
- ios - watchOS 按钮 onClick 触发 Flutter 功能
- c# - Blazor 状态管理 - 将状态保存分解到一个公共位置
- graphics - 如何计算 3D 中两个曲面之间的距离/厚度?
- swift - 使用 Combine 路由 SwiftUI 视图
- php - 如果加载了特定的模板部分,有没有办法将样式表排入队列?
- azure - 如何在将 Dynamics Lifecycle Services (LCS) 资产部署任务部署到沙盒环境时模拟失败
- python - pandas DataFrame 未合并但未报错
- r - 在 R Markdown 中对文章标题进行排序