1

中間テーブルに追加のフィールドが必要な場合の多対多の関係に関するDjangoのドキュメントを読んで、関係を多対多として定義することと、中間キーへの外部キーを使用することによって何が得られるかはわかりません。各モデルのモデル。

たとえば、次の例では、https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany

なぜManyToManyField行を気にするのですか?関係を別の方法で参照することはできますか?管理者の何かを変更しますか?

4

1 に答える 1

1

ManyToManyField line:M2Mフィールドがdjangoである理由は、または(デフォルトのウィジェットを除くフィールドの宣言)などfieldsの多くのモデルフィールドインターフェイスに役立ちます。また、管理者でのm2mマネージャーへのアクセスのしやすさや自動m2m保存などのヘルパーメソッドも生成します。ModelAdminModelForm

これは、フィールドが管理パネルに対して自動的に行うことの簡単な例です。最初にメインオブジェクトを保存しないと、スルーモデルを保存することはできません。save_m2m管理者は、メインオブジェクトが自動的に保存された後、この動作を処理します。m2mフィールドを使用しなかった場合は、この種のロジックを自分でコーディングする必要があります。

プロジェクトがm2mフィールドで機能する場合はこのフィールドを使用すると思いますが、必要な追加情報はわずかです。そうすれば、コードは通常のm2m関係と実質的に同じですが、必要なときに追加情報を照会できます。

それ以外の場合、単なる「date_added」フィールドを追加するには、管理ウィジェット、save_modelフック、ModelForm表現などを作成する必要があります。

ただし、スルーモデルを使用してm2m行を削除してもデータベースは変更されず、最終的にはm2mfield機能をデフォルトのForeignKeyリバースマネージャーに置き換えることができます。

model.m2m_through_set.all() # this would work
model.m2m_through_set.create(target=target_instance)
于 2012-04-23T23:31:47.293 に答える