2013-02-11 115 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