2012-07-17 79 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())