所以,这就是我想要做的。 我有一个模型Staff,它具有User模型的外键。我还有一个模型匹配,它具有用户模型的外键。
我想选择每个员工有多少匹配。我不知道该怎么做,到目前为止我只为User模型工作了。从工作人员,它不允许注释匹配。
这就是现在正在运作的
User.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount")
这就是我想要做的事情
Staff.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount")
顺便说一下,有没有办法过滤比赛?我想按某列过滤匹配。
答案 0 :(得分:1)
如果员工和比赛都有用户的外键,而不是对方,则没有“每个员工有多少场比赛”这样的事情。每个用户都有几个人员和匹配,因此根本无法知道用户的哪个员工与同一个用户的哪个匹配相关。
这不是Django的限制 - 这是一种逻辑限制,是由你构建关系的方式所强加的。
答案 1 :(得分:1)
这不行吗?
Staff.objects.annotate(ammount=Count("user__match")).filter(Q(ammount__gt=0)).order_by("ammount")