【发布时间】:2023-01-07 22:51:07
【问题描述】:
希望计算符合 2 个要求的模型对象的总和。
例如,这就是表格的样子
| User | Venue | Points |
|---|---|---|
| User_1 | Venue_A | 50 |
| User_1 | Venue_B | 25 |
| User_2 | Venue_A | 1 |
| User_1 | Venue_A | 50 |
| User_2 | Venue_A | 1 |
| User_1 | Venue_C | 25 |
在此示例中,我想使用 for loop 将针对 User_1 的每个场地分配的点数相加。
| User | Venue | Total Points |
|---|---|---|
| User_1 | Venue_A | 100 |
| User_1 | Venue_B | 25 |
| User_1 | Venue_C | 25 |
我正在努力理解如何表达在循环中进行双重检查的需要
- 第 1 步:检查 1 - 查找
user.request - 第 2 步:检查 2 - 查找 venue_x
- 第三步:加分;
- 第 4 步:...为下一个场地重新启动流程
我当前的功能有两个问题:
- 它独立于场地计算所有点的总和
- 它在
for loop中使用的查询集之外,因此无法返回特定于venue的数字总和(假设我能得到第一点工作)模型.py
class Itemised_Loyatly_Card(models.Model): user = models.ForeignKey(UserProfile, blank=True, null=True, on_delete=models.CASCADE) venue = models.ForeignKey(Venue, blank=True, null=True, on_delete=models.CASCADE) add_points = models.IntegerField(name = 'add_points', null = True, blank=True, default=0)观点
from django.db.models import Sum def user_loyalty_card(request): itemised_loyalty_cards = Itemised_Loyatly_Card.objects.filter(user=request.user.id) sum_objects = Itemised_Loyatly_Card.objects.filter(user=request.user.id).aggregate(Sum("add_points")) # considering the loop will be with itemised_loyalty_cards , should the sum be in the same queryset? return render(request,"main/account/user_loyalty_card.html", {'itemised_loyalty_cards':itemised_loyalty_cards,'sum_objects':sum_objects})模板
{%for itemised_loyatly_card in itemised_loyalty_cards %} {{itemised_loyatly_card.venue}} {{itemised_loyatly_card.sum_objects}}</td> #**<-- this is obviously not working** {%endfor%}
【问题讨论】:
标签: python django-models django-views django-templates