Я хочу показать статистику по аккаунту по аккаунту в цикле шаблона.В списке диктов или наборов запросов.
У меня есть 3 модели: (1) AdvertisingAccount, (2) Campaign, UserProfile.Мне нужно суммировать () клики и просмотры кампаний, принадлежащих определенным рекламным аккаунтам по внешнему ключу.(AdvertisingAccount также принадлежит UserProfile)
Я пытаюсь получить, вычислить и добавить новое значение ключа к диктовкам набора запросов, но, похоже, я не могу сделать это в методе dict…
views.py
def ad_accounts(request):
user = request.user
accounts = user.userprofile.advertising_accounts.all()
accounts = accounts.values()
for d in accounts:
d.update(('clicks', d.campaigns.all().aggregate(Sum('clicks')) ) for k,v in d.items())
d.update(('views', d.campaigns.all().aggregate(Sum('views')) ) for k,v in d.items())
models.py
class AdvertisingAccount(models.Model):
balance = models.DecimalField(max_digits=12, decimal_places=2, default=0, blank=True, null=True)
foreign_system_name = models.CharField(max_length=30, blank=True, default=None)
foreign_system_id = models.IntegerField(default=None, blank=True, null=True)
def __str__(self):
return self.foreign_system_name + '--' + str(self.foreign_system_id)
class Campaign(models.Model):
userprofile = models.ForeignKey('users.UserProfile', on_delete=models.PROTECT, related_name='campaigns')
trade = models.ForeignKey('payments.Trade', on_delete=models.PROTECT, related_name='campaigns')
ad_account = models.ForeignKey('AdvertisingAccount', on_delete=models.PROTECT, related_name='campaigns')
views = models.IntegerField(default=0, blank=True, null=True)
clicks = models.IntegerField(default=0, blank=True, null=True)
ad_spent = models.DecimalField(max_digits=12, decimal_places=2, default=0, blank=True, null=True)
def __str__(self):
return str(self.userprofile) + '--' + str(self.ad_account.foreign_system_name) + '--' + str(self.trade.ad_budget)
шаблон
{% for i in accounts %}
{{i.clicks}}
{{i.views}}
{% endfor %}
Iполучена ошибка: 'dict' object has no attribute 'campaigns'
Поскольку я не могу получить отфильтрованные данные из шаблонов, я пытаюсь создать собственный набор запросов или список запросов.Целый путь правильный?Как решить мою проблему?