0
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)
这给了我
SELECT DISTINCT "webapp_chat_people"."person_id" FROM
"webapp_chat" INNER JOIN "webapp_chat_people" ON (
"webapp_chat"."id" = "webapp_chat_people"."chat_id")
WHERE "webapp_chat_people"."person_id" = 2
这显然是错误的!我如何解决它?我宁愿不做任何一种“选择n + 1”。我正在使用1.7.7版本,是否需要升级?
作为一个猜测(我需要睡觉,无法测试),什么是Person.objects.filter(chat__people = Person.objects.get (pk = 2))给? – RemcoGerlich
@RemcoGerlich完全有效。好决定。 – Dan