2016-06-13 91 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需要被调用。