質問があります。私は最初のデータベースをまとめ、次のような設計上の問題があります。ブックを定義するクラス(タイトルなど)とページを定義するクラス(たとえばデザイン)を持っています。Djangoデータベース設計:多対多、外部キー、またはどちらも使用できません。
クラス帳のテーブルはそうなります
Title | PAGE1 | PAGE2 | PAGE3
Book-One | SAMPLE1-UUID | SAMPLE2-UUID | SAMPLE3-UUID
Book-Two | SAMPLE4-UUID | SAMPLE5-UUID | SAMPLE6-UUID
クラスのページの表を:
UUID | FONT | CONTENTS etc.
SAMPLE1-UUID | Times | Example
SAMPLE2-UUID | Arial | Example Two
SAMPLE3-UUID | Verdena | Example Three
さて、各ページが一意であり、再利用することができないよう別の本では、Pagesに多対多の関係を使用することはできません。 Foreign-Keyを使用して2つのテーブルをリンクすることができます。つまり、ブックテーブルのSAMPLE1-UUIDとページテーブルのSAMPLE1-UUIDをリンクします。これには、同じエントリを2回作成しないという利点があります。
しかし、自分のページに一定量の行があるという考えは嫌いです。 Bookクラスの上記の例では、PAGE1、PAGE2、PAGE3、PAGE4、... PAGE99のような特定のページセットを定義する必要があります。
Name | Pages
Book-One | "SAMPLE1-UUID, SAMPLE2-UUID"
Book-Two | "SAMPLE4-UUID, SAMPLE5-UUID, SAMPLE6-UUID"
ページはシンプルCharFieldですだろうと、その内容がリストのようになります。理想的には、私が必要とするすべてはそうのように、私の本クラスのページの柔軟なリストです。しかし、2つのテーブルがもうリンクされておらず、各エントリを2回作成する必要があるという問題があります(つまり、ページとブックの両方のテーブルにSAMPLE1-UUIDを入力する必要があります)。
このデータベースを設計する別の方法はありますか?ご意見ありがとうございます!
Keniに感謝します。私の唯一の問題は、私がDjango管理インターフェースにログインして、各ページにどのページがあるのかわかりません。 Daniel Rosemanはmy_book.page_set.all()を使用するよう提案しましたが、この場合はどのように変換されるのか分かりません。これを私のadmin.pyに追加できますか?管理インターフェースに関係なく、ID 1の本のすべてのページのリストをどのように取得しますか?あなたの助けをありがとう、非常に感謝! –
@ n.evermind 'admin.StackedInline'はあなたが探しているものです。 [Djangoのドキュメント](https://docs.djangoproject.com/ja/1.3/intro/tutorial02/#adding-related-objects) – juliomalegria