以Django形式显示可搜索的ManyToMany字段

时间:2013-09-26 07:08:10

标签: django django-forms

因此,在我的Dishes表(成分,框)中我的多个字段的管理UI中,当我使用下面的代码时,表单元素是一个可搜索的框,其中包含该字段的相关模型的整个查询集,并且我将选择移动到右边所选对象的姐妹框中。我使用admin.py

中的以下代码执行此操作
class Dishes(admin.ModelAdmin):
    ...
    filter_horizontal = ('ingredients', 'boxes',)

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

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

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

1 个答案:

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

相关问题