答案 0 :(得分:49)
来自docs:
Django Admin应用程序为日历,过滤选择等定义了许多自定义小部件。这些小部件定义媒体要求,Django Admin使用自定义小部件代替Django默认值。管理员模板将仅包含在任何给定页面上呈现窗口小部件所需的媒体文件。
如果您喜欢Django Admin应用程序使用的小部件,请随意在您自己的应用程序中使用它们!它们都存储在django.contrib.admin.widgets中。
在这种情况下,您需要FilteredSelectMultiple
小部件。要使用它,请在窗体字段上应用窗口小部件,如下所示:
my_field = forms.ModelMultipleChoiceField(queryset=MyModel.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False))
确保在模板中包含表单media
,因为它需要包含一些JS文件。