Python Django传递闭包生成错误的SQL
我有模型Python Django传递闭包生成错误的SQL,python,django,Python,Django,我有模型 class Person(models.Model): # some fields class Chat(models.Model): people = models.ManyToManyField(Person) # some fields 我想生成一个查询集,其中包含所有与某个给定的人至少共享一次对话的人 我试过了 Person.objects.get(pk=2).chat_set.values_list('people').distinct() 但这
class Person(models.Model):
# some fields
class Chat(models.Model):
people = models.ManyToManyField(Person)
# some fields
我想生成一个查询集,其中包含所有与某个给定的人至少共享一次对话的人
我试过了
Person.objects.get(pk=2).chat_set.values_list('people').distinct()
但这给了我[(2,)]
,它应该是[(1,),(2,),(3,)]
然后我试着
print(Person.objects.get(pk=2).chat_set
.values_list('people').distinct().query)
这给了我
从中选择不同的“webapp\u chat\u people”“person\u id”
上的“webapp\u chat”内部加入“webapp\u chat\u people”(
“webapp_chat”。“id”=“webapp_chat_people”。“chat_id”)
其中“webapp\u chat\u people”。“person\u id”=2
这显然是错误的!我如何解决这个问题?我不想做任何形式的“选择n+1”。我使用的是1.7.7版,需要升级吗?只需复制@RemcoGerlich注释作为答案:
Person.objects.filter(chat__people=Person.objects.get(pk=2))
猜猜看(我需要睡觉,无法测试),Person.objects.filter(chat\uu people=Person.objects.get(pk=2))给出了什么?@RemcoGerlich完全奏效了。好电话。