Умножьте два поля вместе в базе данных django - PullRequest
2 голосов
/ 26 апреля 2020

Я новичок в 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)

Есть ли способ, как это сделать? Спасибо за любой совет.

1 Ответ

0 голосов
/ 26 апреля 2020

Да, вы можете обновить это с помощью:

from django.db.models import F

Majitele.objects.all().update(<b>cena_pole=F('cena_p') * F('v_pole')</b>)

При этом, если cena_pole - это всегда умножение cena_p и v_pole, то может быть лучше удалить это поле и использовать аннотации (например, в менеджере) для фильтрации, расчета и т. д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...