0

したがって、料理テーブルの多対多のフィールド (材料、ボックス) の管理 UI では、以下のコードを使用するときのフォーム要素は、フィールドの関連モデルのクエリセット全体を含む検索可能なボックスであり、選択を移動できます。右側の選択されたオブジェクトの姉妹ボックスに。admin.py の次のコードでこれを行います

class Dishes(admin.ModelAdmin):
    ...
    filter_horizontal = ('ingredients', 'boxes',)

ユーザーが見るフロントエンドフォームで同じ動作を再現しようとしています。これはforms.pyのコードです

class RecipesForm(ModelForm):
class Meta:
    model = models.Dishes

しかし、私が得るのは、単一のプレーンな複数選択ボックスだけです。左に 1 つの検索可能なボックスがあり、右に 1 つの検索可能なボックスがあり、左から選択したオブジェクトを含む管理画面で行ったことを再現するにはどうすればよいですか?

4

1 に答える 1

2

両方のフィールドに管理ウィジェットを設定するだけです。

from django.contrib.admin.widgets import FilteredSelectMultiple

class RecipesForm(ModelForm):
    class Meta:
        model = models.Dishes
        widgets = {
            'ingredients': FilteredSelectMultiple('Ingredients', False),
            'boxes': FilteredSelectMultiple('Boxes', False)
        }

また、ウィジェットが適切に機能するには、管理用の静的ファイル (css、js) を追加する必要があります。詳細については、次のリンクを参照してください。

http://jayapal-d.blogspot.com/2009/08/reuse-django-admin-filteredselectmultip.html

于 2013-09-26T08:02:46.960 に答える