как использовать object.filter и вычислить все целочисленные - PullRequest
0 голосов
/ 24 июня 2018

У меня есть модели django (2.0): product & vendor_name

class vendor_name(models.Model):
    name = models.CharField(verbose_name='name vendor', max_length=256)
    version = models.CharField(verbose_name='version vendor', max_length=256)

class product(models.Model):
    name = models.CharField(verbose_name='name product', max_length=256)
    vendor = models.ForeignKey(vendor_name, verbose_name='vendor', 
blank=True, null=True, default=None, on_delete=models.SET_NULL)
    lic = models.PositiveSmallIntegerField(verbose_name='lic', default=0)

Пример ___

первая запись:

product.name = AAA
vendor.name = ZOO
vendor.version = 6
lic = 27

вторая запись:

product.name = BBB
vendor.name = ZOO
vendor.version = 6
lic = 500

как использовать object.filter, где vendor.name ZOO и vendor.version 6, рассчитывают все лицензии продукта?

Я хочу увидеть: 527 и добавить новую запись

product.name = CCC
vendor.name = ZOO
vendor.version = 6
lic = 500
lic = 1027

а я не экспортирую сайт {{ product.lic }} а почему?

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете использовать агрегацию для этого:

from django.db.models import Sum
product.objects.filter(vendor__name='zoo', vendor__version=6).aggregate(lic_total=Sum('lic'))

Результат:

{'lic_total': 527}

Примечание. Для фильтрации по полю, связанному с внешним ключом, следует использовать двойное подчеркивание __.

...