2015-01-05 23 views
0

我有這樣一個模型:Django select_related - 我應該使用嗎?

class A(models.Model): 
    number = models.SmallIntegerField() 

class B(models.Model): 
    a = models.OneToOneField(A) 

,我想要做這樣的事情:

b = B.objects.get(pk=1) 
b.a.number = 5 
b.a.save() 

我的問題是:我應該在這種情況下使用.select_related('a')

b = B.objects.select_related('a').get(pk=1) 
+0

你可以,如果你想 - 它是一個性能增強。 –

+1

取決於您正在做多少條記錄,以及您在做什麼。檢查你的數據庫,看看有多少SQL調用這樣做,vs .select_related。 –

+0

對於你給出的例子,你可以直接通過過濾反向關係來獲取'a':'a = A.objects.get(b__pk = 1)'。 – Alasdair

回答

0

只是爲了總結:是的。如果沒有select_related,則必須執行兩個單獨的數據庫查詢(一個用於獲取b,另一個用於獲取關聯的a)。使用select_related您可以在一個查詢中獲取所有內容。