簡體   English   中英

將 django 數據庫中的兩個字段相乘

[英]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_pv_pole的乘積,那么最好刪除該字段,並使用注釋(例如在管理器中)進行過濾、計算等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM