ManyToManyField line
:M2Mフィールドがdjangoである理由は、または(デフォルトのウィジェットを除くフィールドの宣言)などfields
の多くのモデルフィールドインターフェイスに役立ちます。また、管理者でのm2mマネージャーへのアクセスのしやすさや自動m2m保存などのヘルパーメソッドも生成します。ModelAdmin
ModelForm
これは、フィールドが管理パネルに対して自動的に行うことの簡単な例です。最初にメインオブジェクトを保存しないと、スルーモデルを保存することはできません。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)