2011-09-26 25 views
5

私は本と著者を表す以下のモデルを持っています。 1つの本は複数の著者を持つことができ、1つの著者は複数の本を書くことができます。だから私はDjangoのManyToManyField型を使って2つのモデルを互いにリンクしています。ManyToManyField複数のモデル間の関係

おそらくDjango Adminを使用してBookを追加し、その過程でAuthorを作成することができます。しかし、私がAuthorを見たとき、それはBookにリンクされていません。 AuthorインスタンスとBookインスタンスの間の逆の関係を明示的に設定する必要があります。

それはまさにその方法ですか、私は何か違うことをすることができますか?

Models.py

class Book(models.Model):  
    book_title = models.CharField(max_length=255, blank=False) 
    authors = models.ManyToManyField('Author', blank=True) 

class Author(models.Model): 
    author_first_name = models.CharField(max_length=255, blank=False) 
    author_last_name = models.CharField(max_length=255, blank=False) 
    books = models.ManyToManyField(Book, blank=True) 

答えて

7

ManyToManyFieldないモデルクラスは逆の関係を通じて他に関連しているので、次の2つのManyToManyField定義は必要ありません。参照:https://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships

あなたがように2つのモデルクラスを定義した場合:任意のAuthorインスタンスa、次いで

class Book(models.Model):  
    book_title = models.CharField(max_length=255, blank=False) 
    authors = models.ManyToManyField('Author', blank=True) 

class Author(models.Model): 
    author_first_name = models.CharField(max_length=255, blank=False) 
    author_last_name = models.CharField(max_length=255, blank=False) 

a.book_set.all()は、著者が書いた(または共が書いた)の本で構成されています。

+0

ああ!それは素晴らしいです。それがそのように働いたことを知らなかった。どうもありがとう! – Raj

関連する問題