gpt4 book ai didi

django - 从多到多的列表中按用户汇总总数

转载 作者:行者123 更新时间:2023-12-04 08:18:02 24 4
gpt4 key购买 nike

祝你过个好年:)
我有一个问题。我如何获得属于 friends 的每个用户的总金额(prix + prix + ...) (预订的模型)。
我可以用请求用户来做到这一点:

context['user_total'] = RerservationOrder.objects.filter(user=self.request.user).filter(resa_order_reservation=self.object).aggregate(total=models.Sum('prix'))['total']
但是假设我有三个 friend = X Y 和 Z。我如何列出 X/Y 和 Z 的总数
我被这个问题困住了。提前致谢
class Reservation(models.Model):
friends = models.ManyToManyField(User,blank=True,related_name='friends_reservation')
resa_order = models.ManyToManyField('RerservationOrder',blank=True, related_name='resa_order_reservation')
...

class RerservationOrder(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
prix = models.DecimalField(max_digits=6,decimal_places=2)
...

最佳答案

您可以先过滤 ReservationOrder s 的用户应该属于给定的预订,然后总结每个用户的价格:

from django.contrib.auth import get_user_model
from django.db.models import Sum

User = get_user_model()

User.objects.filter(
rerservationorder__resa_order_reservation=self.object
).annotate(
total=Sum('rerservationorder__prix')
)
User这个查询集中的对象将有一个额外的属性 .total那是 prix 的总和相关的 ReservationOrder s。如果用户没有这样的 ReservationOrder s,用户将不属于 QuerySet .
请注意,您在模型名称中打错了字:它是 ReservationOrder ,不是 RerservationOrder .

关于django - 从多到多的列表中按用户汇总总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65619976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com