2017-09-14 68 views
3

我有2種型號Django的:select_related到表VS表的字段

class A(models.Model): 
    val = models.IntegerField() 

class B(models.Model): 
    val2 = models.IntegerField() 
    a = models.ForeignKey(A) 

class C(models.Model): 
    b = models.ForeignKey(B) 
    val3 = models.IntegerField() 

如何查詢 -

C.objects.select_related('B').all() 

好過 -

C.objects.select_related('B__val2').all() 

如果不是如何查詢一個可以優化?

回答

0

試圖篩選您需要的模式,由兒童模特

B.objects.filter(c__isnull=False) 

的lowcase過濾器在這裏閱讀更多lookups-that-span-relationships

+0

過濾是另一種方式來做到這一點。但是,如果引用模型的領域可以以某種方式使用,那麼比這更好。 –