Django Admin + Filter Horizo​​ntal?

mpe*_*pen 9 django django-admin

我添加了水平过滤器

filter_horizontal = ('blocked_email_notifications',)
Run Code Online (Sandbox Code Playgroud)

对我而言ModelAdmin,它仍然将它渲染为多选小部件,而不是漂亮的javascript增强版本.怎么会?我需要添加其他东西吗?

用户模型将其定义为

blocked_email_notifications = ManyToManyField('EmailTemplate', blank=True)
Run Code Online (Sandbox Code Playgroud)

表格定义为

blocked_email_notifications = ModelMultipleChoiceField(queryset=EmailTemplate.objects.order_by('key'), required=False)
Run Code Online (Sandbox Code Playgroud)

Ber*_*ant 19

如果您在表单中定义字段,则需要包含窗口小部件:

from django.contrib.admin.widgets import FilteredSelectMultiple

blocked_email_notifications = ModelMultipleChoiceField(
    queryset=EmailTemplate.objects.order_by('key'), 
    required=False,
    widget=FilteredSelectMultiple(
        verbose_name=EmailTemplate._meta.verbose_name,
        is_stacked=False))
Run Code Online (Sandbox Code Playgroud)

is_stacked:

  • False:列表并排呈现
  • True:列表在另一个下面呈现一个

  • 只想添加你需要传递FilteredSelectMultiple(verbose_name,stacked)实例而不是类的答案,以便最近版本的Django不会抱怨. (6认同)