[英]Multiply two fields together in django database
我是 Django 的新手,我一直在嘗試這樣做一段時間。
models.py
class Majitele(models.Model):
cena_p = models.DecimalField(decimal_places=2, max_digits=10, null=True)
cena_l = models.DecimalField(decimal_places=2, max_digits=10, null=True)
lv = models.IntegerField(null=True)
katastr = models.CharField(max_length=40, null=True)
jmeno = models.CharField(max_length=40, null=True)
ulice = models.CharField(max_length=30, null=True)
mesto = models.CharField(max_length=30, null=True)
psc = models.IntegerField(null=True)
v_pole = models.DecimalField(decimal_places=4, max_digits=10, null=True)
v_les = models.DecimalField(decimal_places=4, max_digits=10, null=True)
v_celkem = models.DecimalField(decimal_places=4, max_digits=10, null=True)
cena_pole = models.DecimalField(decimal_places=4, max_digits=10, null=True)
cena_les = models.DecimalField(decimal_places=4, max_digits=10, null=True)
cena_rok = models.DecimalField(decimal_places=4, max_digits=10, null=True)
nevyplaceno = models.IntegerField(null=True)
podil = models.CharField(max_length=5, null=True)
hlasu = models.IntegerField(null=True)
poznamka = models.CharField(max_length=200, null=True)
prezence = models.BooleanField(null=True)
vyplatni = models.BooleanField(null=True)
postou = models.BooleanField(null=True)
osobne = models.BooleanField(null=True)
def __str__(self):
return '%s'%(self.jmeno)
這是我想做的事情:取 v_pole 值然后 cena_p 值並將它們相乘,然后將結果保存在 cena_pole 字段中。
我試過這個:
Majitele.objects.all().annotate(vypocet_c=F('cena_p') * F('v_pole')).update(cena_pole=vypocet_c)
有沒有辦法做到這一點? 感謝您的任何建議。
是的,您可以通過以下方式更新:
from django.db.models import F
Majitele.objects.all().update(cena_pole=F('cena_p') * F('v_pole'))
話雖如此,如果cena_pole
始終是cena_p
和v_pole
的乘積,那么最好刪除該字段,並使用注釋(例如在管理器中)進行過濾、計算等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.