Django Adminのデフォルトmodels.ManyToManyField
使用するのが面倒なウィジェット。 HTML select 要素であり、「他の」モデルのオブジェクトが多数ある場合、「この」オブジェクトに関連付ける「他の」オブジェクトを実際に見つけることは非常に非現実的です。また、a lotの「その他」モデルのオブジェクトがある場合は、管理者のレンダリングも遅くなるようです。ページ。
独自のカスタム管理ウィジェットを作成して、ManyToManyFields
に適用できることは承知していますが、代わりに使用できるビルド済みのものはありますか?私の夢では、自動入力のテキスト入力HTMLウィジェットを想像します。これは、Django adminフレームワークで実行するのが実用的/可能ですか?
ありがとう。
Adminクラスでfilter_horizontal
属性を使用してみてください。例:
class SomeModelAdmin(admin.ModelAdmin):
filter_horizontal = ('users',)
ドキュメント で述べたように、「ManyToManyFieldをこのリストに追加すると、代わりに、オプション内での検索を可能にする気の利いた控えめなJavaScript「フィルター」インターフェースを使用します」。 filter_vertical
は、わずかに異なるレイアウトで同じことを行います。
実際にプレイしたことはありませんが、他の場所で参照されている この有望なライブラリ が見つかりました。
まさに私が望んでいたことをするようです。関連オブジェクトのリスト全体をロードして(いくつあるかに関係なく!)、filter_horizontal
は、検索/フィルターボックスを表示し、typeahead/autocomplete呼び出しを使用して結果を動的に取得します。これは、おそらく5000人のユーザーがいて、5k _を待たずに3人または4人を選択したい場合に最適です<option>
ダウンロードしてレンダリングする要素。
これは古い質問ですが、私がやったようにこれを見つけた人のためにここに答えを追加したいと思います:この状況はまさにDjangoインライン管理者の目的です。選択肢が多すぎる多対多リレーションの未加工IDフィールド。
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#Django.contrib.admin.TabularInline