2012-07-17 84 views
-1

我有型號:如何獲取相關對象?

class Model_1(models.Model): 
    name = models.CharField(...) 

class Model_2(models.Model): 
    [...] 
    m1 = models.ManyToManyField(Model_1, blank=True, null=True) 

class Model_3(models.Model): 
    [...] 
    m1 = models.ForeignKey(Model_1) 

,我想所有Model_3對象簡單。到目前爲止,我是這樣做的:

obj = Model_2.objects.filter(...) 
this_i_want = [] 
for my2 in obj: 
    for my1 in my2.m1.all(): 
     objects = Model_3.objects.filter(m1=my1) 
     for o in objects: 
      this_i_want.append(o) 

如何做到最簡單?我必須從Model_2開始。

+0

想想看在兩個步驟。第1步 - 獲取所有您想要的m1列表 - 嘗試使用值(「m1」)。distinct(),第2步 - 拉出所有Model_3,其中m1位於步驟1中收集的m1列表中。 – PhoebeB 2012-07-17 19:44:10

回答

1

試試這個:

Model_3.objects.filter(m1__model_2__in=Model_2.objects.all())