关于django模型API的问题

时间:2010-05-30 13:35:33

标签: django django-models

所以,这就是我想要做的。 我有一个模型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")

顺便说一下,有没有办法过滤比赛?我想按某列过滤匹配。

2 个答案:

答案 0 :(得分:1)

如果员工和比赛都有用户的外键,而不是对方,则没有“每个员工有多少场比赛”这样的事情。每个用户都有几个人员和匹配,因此根本无法知道用户的哪个员工与同一个用户的哪个匹配相关。

这不是Django的限制 - 这是一种逻辑限制,是由你构建关系的方式所强加的。

答案 1 :(得分:1)

这不行吗?

Staff.objects.annotate(ammount=Count("user__match")).filter(Q(ammount__gt=0)).order_by("ammount")