我在尝试过滤多对多关系时遇到了问题。
这是我的models.py:
class Member(models.Model):
name = models.CharField(max_length=255)
class Talk(models.Model):
members = models.ManyToManyField(Member)
我希望得到两位成员参加的对话。
以下是我的数据:
{
"pk": 2,
"members": [
36384,
12626,
48397
],
},
{
"pk": 3,
"members": [
36384,
12626,
-89813,
48397
],
}
我希望得到两个指定成员参与的对话。我的查询如下:
Talk.objects.filter(members__in=[12626, -89813])
我得到的结果如下:
<QuerySet [<Talk: 2>, <Talk: 3>, <Talk: 3>]>
如何才能使结果成为这个?
<Talk: 3>
注意:它是指定成员参与的唯一对话
由于
答案 0 :(得分:2)
尝试下面的django查询:
from django.db.models import Q
Talk.objects.filter(
Q(members__id=12626) & Q(members__id=-89813)
)