2016-06-13 205 views
0

在Django(1.9)中,我想訪問隱式定義的中介模型,給定創建關係的field。比方說,我有模特Django:從ManyToManyField訪問「through」模型

class Book(models.Model): 
    title = models.CharField(max_length=255) 
    author = models.ManyToManyField('Author') 

class Author(models.Model): 
    name = models.CharField(max_length=255) 

我得到的中介模式類作爲

Book.author.through 

,我通過

Book._meta.get_field('author').remote_field.through() 

獲得具有相似屬性的對象。然而,我面對的下一次由through()返回的對象中的through()返回的對象一次的問題不相等。我可以以某種方式直接從現場獲得Book.author.through類,through()背後的想法是什麼?

回答

2

答案很簡單。 Book._meta.get_field('author').remote_field.through確實會爲您提供與Book.author.through相同的班級。通過使用through(),這個類顯然可以被調用,你實例化了一個類的新實例,這些實例通常都是不相等的。這只是在Python shell中自動完成的,導致我相信remote_field.through需要被調用。

相關問題