[英]Calculating fields with filters in Django
我對 Django 和 python 和一般編程有點陌生,所以我可能會問一個愚蠢的問題。 我正在嘗試跟蹤我們工作中庫存中的葯物。 這是我的 model 用於我們保險箱中的庫存
class Safe(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
date_created = models.DateTimeField(auto_now=True)
drug_name = models.ForeignKey('components.Drug', related_name='drug_remove', on_delete=models.PROTECT, default=0)
amount_removed = models.IntegerField(blank=True, null=True)
amount_added = models.IntegerField(blank=True, null=True)
incident_number = models.CharField(max_length=20, default=0, blank=True)
patient_name = models.CharField(max_length=20, default=0, blank=True)
medic_unit = models.ForeignKey('components.MedicUnit', related_name='medic_unit', on_delete=models.PROTECT, blank=True)
free_text = models.CharField(max_length=1000, default=0, blank =True)
drug_total = computed_property.ComputedIntegerField(compute_from='add_drug')
我想將每種葯物的葯物總數存儲在數據庫中。 我從研究中了解到,在大多數情況下,存儲總計並不是最佳實踐,但我相信這是一個例外。 顯然,計算出來的 integer 字段不是答案,但我的研究都沒有讓我更接近答案。 我的猜測是,我首先需要按“drug_name”過濾,然后在我的 model 中的 function 中計算先前總數中添加或減去的葯物。 提前感謝您的幫助。
我可能弄錯了你需要的東西。 但在我看來,您只需要計算drug_total + drug_added - drug_removed
是否正確? 將此添加到 model 的底部:
def get_current_amount_of_drug(self):
return self.drug_total - self.drug_removed + self.drug_added
然后從您需要的任何視圖或其他地方 - 您只需致電
safe = Safe.objects.filter(drug_name="My Drug").first() # or however you filter them and then just get
safe.get_current_amount_of_drug()
也許文檔會為您提供更多幫助: https://docs.djangoproject.com/en/2.2/topics/db/models/#model-methods
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.