2016-06-13 9 views
0

Django(1.9)では、関係を作成するfieldを指定して、暗黙的に定義された中間モデルにアクセスしたいと思います。私はDjango:ManyToManyFieldから "through"モデルにアクセス

Book.author.through 

として仲介モデルクラスを取得し、私はしかし、私が直面してる

Book._meta.get_field('author').remote_field.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) 

を持っているとしましょう次回はthrough()によって返されたオブジェクトが返されたオブジェクト内で一度等しくない問題が発生しました。どういうわけかフィールドから直接Book.author.throughクラスを直接取得できますか?through()の背後にあるアイデアは何ですか?

答えて

2

答えは非常に簡単でした。 Book._meta.get_field('author').remote_field.throughは実際にあなたにBook.author.throughと同じクラスを与えます。このクラスは、明らかに、through()を使用して呼び出すことができます。このクラスのインスタンスは、インスタンスが通常そうであるように、互いに等しくないインスタンスをインスタンス化します。私は、remote_field.throughが呼び出される必要があると私に信じさせたのは、Pythonシェルの自動完成でした。

関連する問題