Django多选小部件?

mpe*_*pen 52 forms django django-forms

Django管理站点使用了一个非常酷的小部件:

在此输入图像描述

如何在我自己的应用程序中使用此小部件?我没有看到这里列出的任何东西.

Bar*_*tek 51

来自文档:

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))
Run Code Online (Sandbox Code Playgroud)

确保media在模板中包含表单,因为它需要包含一些JS文件.

  • 哦,我还应该提一下,你需要以超级用户身份登录才能访问该文件!我建议保存文件,包括相反. (4认同)
  • 没关系。找到了问题。它还需要`<script type =“ text / javascript” src =“ /〜mnb2 / a3 / admin / jsi18n /”> </ script>`,而它不包含在form.media中。 (2认同)