Django聚合函数问题(Count = -number-)

时间:2011-08-05 11:49:52

标签: python django django-models

User
   id
   name
Device
   id
   name
   user-id
   is_enabled 

我想选择所有具有

的用户
  1. 至少启用了一台设备。
  2. 正好启用了2台设备
  3. 启用所有设备

    注意:启用表示(Device.is_enabled = 1)
  4. 我知道我可以使用注释来获取设备数量。但是如何使用annonate来获得拥有2个已启用设备的用户数量

    我目前正在搞乱

    User.objects.filter('device_set__is_enabled'=1)
    

    提供至少拥有一个已启用设备的用户列表。 不知道接下来该做什么。

1 个答案:

答案 0 :(得分:1)

from django.db.models import Count
User.objects.filter(device__is_enabled=1).annotate(
    device_count=Count('device')).filter(device_count=2)

User.objects.exclude(device__is_enabled=0)