2010-03-04 26 views
13

Model1具有一個到Model2的外鍵。 Model2對Model3有一個ForeignKey(Model3,null = True,blank = True)。默認情況下,當我在Model1上使用select_related()時,由於null = True,未選擇Model3。我如何強制select_related()跟蹤具有null = True的foreign_key?如何強制select_related()選擇具有null = True屬性的ForeignKeys?

我能想到的唯一的辦法就是明確地選擇這些外鍵:

model1s = Model1.objects.all().select_related('model2', 'model2__model3') 

這是唯一的辦法?

回答

14

是的,這是你選擇null = True的相關項目的方式。

直起docs for select_related

您可以參考傳遞給select_related字段列表中的任何ForeignKey的或OneToOneField關係。這包括具有null = True的外鍵(不同於默認的select_related()調用)。

是否有什麼原因需要採取不同的方式來執行此操作?如果沒有,你已經擁有了它。

+0

我有很多ForeignKey字段設置爲null = True。我寧願不把它們全部列出。但我想我必須這樣做。 – 2010-03-04 21:03:36

+1

你又對了。它看起來好像很多打字,但這在技術上是一個角落的用例。儘管如此,最好還是不能選擇相關。如果你想出不同的東西,請添加你自己的答案。 – istruble 2010-03-04 21:42:21

+0

用了這個年齡尋找這個..謝謝你的問題和答案! – John 2012-06-19 20:10:32

相關問題