2010-12-05 11 views
0

私は現在、Djangoの細かい点のいくつかを把握しており、本格的に使用し始めています。私はいくつかの外部キーの関係を持っている例を持っている、私はオブジェクトを別々に保つためにしたい。ここでは簡単models.py例です: - 例えば、書籍は図書館の外に存在することはできませんし、単一のライブラリに固有のDjango:「子供」のような別々のオブジェクトのセットを維持する

class CopyOfBook(models.Model): 
    barcode = models.CharField(max_length=100) 

class Book(models.Model): 
    title = models.CharField(max_length=100) 
    copies = models.ManyToManyField(CopyOfBook) 

class Library(models.Model): 
    name = models.CharField(max_length=100) 
    books = models.ManyToManyField(Book) 

これらの各コンポーネントは、その親に依存します。ちょっと工夫された例だと分かっていますが、これをDjangoでモデル化する最良の方法は何ですか?

管理者を開いて新しいブックを追加すると、そのブックに属するものだけでなく、すべてのCopyOfBookインスタンスのリストが表示されるという問題があります。 1つは空のリストになります)。

私は明確に説明してくれることを願っています。

アップデート:私はManyToMany.limit_choices_toを使用しよう、との引数に適切なrelated_nameを使用しますが、多くの喜びのないされています。

答えて

1

まず、エンティティリレーションシップモデルを考える必要があります。

CopyOfBookには、1つのブックと1つのライブラリがあります。だからあなたはそれぞれにForeignKeyを与えることができます。

ブックとライブラリは、CopyOfBookを介してのみ接続されています。したがって、これは厳密には必要ではありませんが(ForeignKeyの上の2つで十分です)、ライブラリにManyToManyの関係をBook =〜CopyOfBookで指定することができます。

0

書籍がSINGLEライブラリに限定されている場合は、ManyToManyFieldLibrary)よりもライブラリがForeignKeyである必要があります。また、私はCopyOfBookも1冊の本に特化していると思いますので、ここでも同じです!

その後、InlineModelAdminsで本とコピーを管理することができます。

0

LibraryBookの間にあるManyToManyの関係は、複数のライブラリが同じ本を持つことができるため、問題ありません。しかし、BookCopyOfBookの間にあるManyToManyの関係は私には意味がありません。特定のコピーは特定の本のものとすることができます。代わりに、many-to-one (ForeignKey)の関係があります。特定の書籍に複数のコピーが関連付けられます。

+0

彼は本が単体ライブラリに特化していると述べています.... –

関連する問題