因此,在我的Dishes表(成分,框)中我的多个字段的管理UI中,当我使用下面的代码时,表单元素是一个可搜索的框,其中包含该字段的相关模型的整个查询集,并且我将选择移动到右边所选对象的姐妹框中。我使用admin.py
中的以下代码执行此操作class Dishes(admin.ModelAdmin):
...
filter_horizontal = ('ingredients', 'boxes',)
我试图在用户看到的前端表单中复制相同的行为,这是我的forms.py中的代码
class RecipesForm(ModelForm):
class Meta:
model = models.Dishes
但我得到的只是一个简单的多选框。我如何复制我在管理员中所做的事情,我在左边有一个可搜索框,右边有一个我从左边选择的对象?
答案 0 :(得分:1)
您只需为这两个字段设置管理窗口小部件:
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