【问题标题】:Displaying Searchable ManyToMany field in Django form在 Django 表单中显示可搜索的多对多字段
【发布时间】:2013-09-26 07:08:09
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: django django-forms


    【解决方案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

    【讨论】:

    • 我得到以下错误点,指向上面代码中以“成分”开头的行,异常类型:TypeError 异常值:__init__() 至少需要 3 个参数(给定 1 个)
    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2011-04-20
    • 2018-12-19
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多