嗨,大家好,我有一个问题要问。我有以下模型:
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原则解决呢???
答案 0 :(得分:0)
如果您的目标是仅获取Totale_Vendite
个字段金额(不含货币)的ricavi_01
个条目的列表,则只需执行以下操作:
data = queryset.values_list('ricavi_01', flat=True)
这将产生十进制类型的项目列表。