1

DjangoのORMを使用する場合、すべてのテーブルに主キー列が必要であるという事実を認識しています。どういうわけか、テーブルにリンクする多対多のテーブルがある場合 (それらを著者と本と呼びましょう)、次のような結果が得られます。

id     author_id     book_id
1      1             1
2      1             2
3      2             3
etc.

列「id」を避け、代わりに複合主キーを作成することが提案されている本に遭遇しました。これはdjangoでうまくいきますか?

4

1 に答える 1

2

スルー テーブルに複合主キーを作成できます (ALTER TABLE を使用)。テーブルから id 列を削除することもできます。ManyToMany フィールドがバックエンドで動作する方法はとにかく id 列を使用しないため、これは django に害を及ぼすことはありません。

ただし、複合 PK を django で動作させることは、基本的に初心者ではないことに注意してください。テーブルがスルーテーブルへの ForeignKey を持つべきではないため、これは問題にならないはずです (少なくとも私が考えることができる何らかの理由で.

要約すると。複合主キーは django では機能しません。したがって、複合PKを持つテーブルへのForeignKeyが必要な場合は、基本的にSOLです。最後に、ここで複合 PK を使用することについて本当の長所はありませんが、本当の短所もありません (この唯一のケース)。では、なぜあなたはこれについて心配することに時間を費やしているのですか?

于 2011-08-03T15:30:59.640 に答える