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