我想做一些非常简单但却找不到办法的方法。
models.py:
class Reward:
name = models.CharField(max_length=50)
# other stuff
class UseRewardEvent:
reward = models.ForeignKey(Reward)
# other stuff
最后,我想打印一张带有奖励名称和奖励名称的活动数量的表格。
例如:
如果UseRewardEvent.objets.all()包含3个链接的reward.name为的对象:
和Reward.objects.all()包含3个名称为的对象:
这应该在我的模板中打印一个包含以下使用奖励的表格:
非常感谢您的帮助。
答案 0 :(得分:2)
这是aggregation的用途。
from django.db.models import Count
Reward.objects.annotate(use_count=Count('userewardevent'))
答案 1 :(得分:0)
for reward in Reward.objects.all():
print reward,'->',len(reward.userewardevent_set.all())
用于模板
{% for reward in Reward.objects.all %}
<p>{{ reward }} --> {{ reward.userewardevent_set.all|length }}</p>
{% endfor %}
使用 reward.userewardevent_set 获取相关信息,它是一个RelatedManager,充当 reward.objects
根据Daniel Roseman提高效率,thx!
for reward in Reward.objects.all():
print reward,'->',reward.userewardevent_set.count()
用于模板
{% for reward in Reward.objects.all %}
<p>{{ reward }} --> {{ reward.userewardevent_set.count }}</p>
{% endfor %}