2013-02-11 87 views
17

我有一个模型MyModel2ManyToManyField有关的另一个模型MyModel1如何直接查询由Django为ManyToMany关系创建的表?

如何获得配对mymodel1.id, mymodel2.id,如Django为此关系创建的表中所示?我是否必须在此表上执行原始SQL查询,还是有可能通过此模型的对象管理器?

class MyModel1(models.Model): 
    name = models.CharField(max_length=50) 


class MyModel2(models.Model): 
    name = models.CharField(max_length=50) 
    mymodel1 = models.ManyToManyField(MyModel1) 

回答

35

这是多对多的字段实例:

MyModel2.mymodel1 

这是中介表型号:

MyModel2.mymodel1.through 

这是中介模型管理器:

MyModel2.mymodel1.through.objects 

这将返回一个查询所有中介模式设置:

MyModel2.mymodel1.through.objects.all() 

This part Django文档的谈论through。您可以自己制作through型号,否则会自动生成。

+0

这清除了我所有的疑惑,,, :) – Spiderman 2016-01-26 07:49:09

+0

'ManyToManyDescriptor'对象没有属性'虽然' – 2017-11-27 10:31:06

+0

你有一个错字;)它是通过! – jpic 2017-11-27 11:34:22