【问题标题】:django, how to Use Count in Qdjango,如何在 Q 中使用计数
【发布时间】:2015-09-29 21:29:28
【问题描述】:

我有以下型号:

class Group(models.Model):

    group_name = models.CharField(max_length=16)

class Member(models.Model):

    group = models.ForeignKey('Group')
    member_name = models.CharField(max_length=16)
    gender = models.BooleanField() #False is "female", True is "male"

如何找到没有MemberGroup,或者Members的男性数量为零?

我尝试了以下方法,但没有成功:

Group.objects.filter( Q(member__isnull=True) |
                      Q(member__isnull=False) &
                      Q( Count(member__gender=True)=0 ) )

【问题讨论】:

    标签: python django django-admin django-queryset


    【解决方案1】:

    解决方案,

    Group.objects.filter(Q(member__isnull=True) | ~Q(member__gender=True))
    

    当您尝试获取可能返回多个结果的内容时,您应该使用 filter 而不是 get

    如果要统计查询集,可以使用,

    Group.objects.filter(Q(member__gender=False )).count()
    

    【讨论】:

    • 是的,过滤器是正确的,但您的解决方案不起作用。我想找到没有成员或所有成员都是女性的“组”。
    • (1) Group.objects.filter(Q(member__isnull=True) | ~Q(member__gender=True)).distinct(),你应该添加 distinct。 (2) 你的解决方案是对的,因为它不健壮。如果我想要“男性成员为 2”怎么办。 (3) 但它仍然有效,所以标记你的答案有用。
    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2021-03-22
    • 1970-01-01
    • 2013-02-16
    • 2021-05-26
    • 2013-06-30
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多