Django.Field用于选择值(ManyToMany),就像在管理面板中一样

w80xi6nr  于 2023-04-22  发布在  Go
关注(0)|答案(1)|浏览(190)

如何实现在管理面板中显示表单的字段(当它被填充时)(屏幕截图)?
我尝试使用forms.CheckboxSelectMultiple小部件,但它不太适合。它提供了整个列表从请求作为一个整体,这不是很方便,因为我的列表将非常大。我们需要一个滑块和搜索字段,因为它实际上是在管理面板中实现的。

xriantvc

xriantvc1#

要在表单中实现与管理面板中相同的字段显示,您可以使用Django的FilteredSelectMultiple小部件。
此小部件包括一个搜索字段和一个滑块,可以更轻松地从大型列表中选择多个项目。
你可以从django.contrib.admin.widgets导入这个widget,并在表单域中使用它,如下所示:

from django.contrib.admin.widgets import FilteredSelectMultiple
from django.forms import ModelMultipleChoiceField, ModelForm
    
    
class MyForm(ModelForm):
    my_field = ModelMultipleChoiceField(
        queryset=MyModel.objects.all(),
        widget=FilteredSelectMultiple("verbose name", is_stacked=False)
    )

确保将MyModel替换为模型名称,并根据需要调整小部件的详细名称和is_stacked参数。

相关问题