我有一个名为groups的表。我想返回只有John和Mary参与的组号。
想想一个聊天应用程序,我想看看这两个现有的人是否已经只拥有一个组。
Group | user
1 | john
1 | mary
1 | dave
2 | john
2 | mary
我该怎么做?
这是实际模型
class Conversation(models.Model):
attendee = models.ManyToManyField(User)
guid = models.CharField(max_length=16)
答案 0 :(得分:1)
asnwer基于@ arocks的方法,因为@ rocks的注释是错误的。
Conversation.objects.annotate(user_count=Count('attendee')).filter(user_count=2, attendee__username="john").filter(attendee__username="mary")
这将返回一个Conversation
个对象的QuerySet,其中有2个成员,成员是 mary 和 john
您必须单独filter
的原因是,您的数据库管理系统需要创建临时子表,因为您需要使用相同的数据库列username
两次进行过滤。您的数据