0

因此,在我的菜肴表(配料、框)中的多对多字段的管理 UI 中,当我使用下面的代码时,表单元素是一个可搜索的框,其中包含该字段相关模型的整个查询集,这让我可以移动选择到右侧选定对象的姊妹框。我在 admin.py 中使用以下代码执行此操作

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

我试图在我的前端表单中复制用户看到的相同行为,这是我 forms.py 中的代码

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

但我得到的只是一个简单的多选框。我如何复制我在管理员中所做的事情,其中​​左侧有一个可搜索框,右侧有一个带有我从左侧选择的对象?

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 回答