在Django Forms中,如何将过滤器添加到SelectedMultiple控件?

时间:2019-05-13 16:09:12

标签: django

我正在使用Django Forms。在我的模型中,我在类X和类Y之间有ManyToMany关系,而Django显示了一个非常烦人的MultipleChoice控件来编辑此关系。我想添加一个过滤器,以便编辑X对象,以便用户在写入名称以最终选择它们时可以按名称过滤Y对象

有关如何在Django中执行此操作的一些想法?

1 个答案:

答案 0 :(得分:0)

默认情况下,Django ManyToManyField中的Model将由ModelMultipleChoiceField中的ModelForm表示,而SelectMultiple本身使用<select multiple="multiple">小部件。此小部件使用默认的浏览器ModelMultipleChoiceField元素,这将导致您“烦人”的多项选择控件。

因此,要替换它,您应该在表单中覆盖SelectMultiple,以将其传递给您自己的窗口小部件(它将继承my_field = forms.ModelMultipleChoiceField(queryset=Y.objects.all(), widget=MySelectMultiple) 并覆盖所使用的模板):

const express = require('express')
const helmet = require('helmet')

const app = express()

app.use(helmet())

但是,许多人已经做过这种事情,因此使用具有喜欢的选择选项的小包可能更容易。

前端非常流行的jquery模块是select2。如果您想使用它,已经有一些django软件包已经支持它,流行的是django-autocomplete-lightdjango-select2