Как использовать все значения экземпляра модели в django views.py - PullRequest
0 голосов
/ 23 марта 2020

Hy Ребята, у меня есть к вам вопрос. У меня есть следующая модель:

from djmoney.models.fields import MoneyField

class Totale_Vendite(models.Model):
    totale_vendite = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_dalle_vendite = models.CharField(max_length=100, editable=True)
    ricavi_01 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_02 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_03 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_04 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_05 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_06 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_07 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_08 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_09 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_10 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_11 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
    ricavi_12 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)

Каждый экземпляр представляет доход за месяц, используя приложение djmoney. В моем views.py я хочу извлечь для каждого экземпляра (ricavi_01, ricavi_02) значение «количество» (не валюта). На данный момент я пробовал только следующий способ, то есть извлекать значение отдельно для каждого месяца:

def ricavi_dalle_vendite(request):
    queryset = Totale_Vendite.objects.all()
    labels = ['Gen','Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
    data = []

    for entry in queryset:
        data.append(str(entry.ricavi_01.amount))
....

как можно решить, следуя принципам DRY ???

1 Ответ

0 голосов
/ 23 марта 2020

Если ваша цель - получить только список Totale_Vendite записей с ricavi_01 суммой денежного поля (без валюты), вы можете просто сделать это:

data = queryset.values_list('ricavi_01', flat=True)

Это произведет элементы список десятичного типа.

...