wigtail admin中的多个选择

问题描述 投票:5回答:1

使用Django ModelAdmin时,我可以使用:

filter_horizontal = ('some_many_to_many_field',) 

因此,它不是显示默认的多选小部件,而是显示一个带有两个块的漂亮界面,用于选择一些值。

在django ModelAdmin中使用与wagtail的ModelAdmin中的多对多字段相同的小部件是否有类似的选项?

谢谢!

python django python-3.x wagtail
1个回答
6
投票

回答你的问题:不,在Wagtail的filter_horizontal应用程序中没有相当于contrib.modeladmin

但是,有一些方法可以覆盖用于模型中字段的窗口小部件。最简单的方法是在模型的面板定义中使用FieldPanelwidget参数。例如:

from django import forms
from django.db import models
from wagtail.admin.edit_handlers import FieldPanel

class TestModel(models.Model):
    manytomany = models.ManyToManyField('someapp.SomeModel', blank=True)

    panels = [
        FieldPanel('manytomany', widget=forms.CheckboxSelectMultiple)
    ]

或者,如果您注册的模型是wagtail.core.models.Page的子类,则以下示例更合适:

from django import forms
from django.db import models
from modelcluster.fields import ParentalManyToManyField
from wagtail.core.models import Page
from wagtail.admin.edit_handlers import FieldPanel

class TestPageModel(Page):
    manytomany = ParentalManyToManyField('someapp.SomeModel', blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('manytomany', widget=forms.CheckboxSelectMultiple)
    ]

不幸的是,没有相当于Django的filter_horizontal小部件可以很容易地以这种方式使用。该特定小部件依赖于作为Django管理UI的一部分加载的各种样式和脚本。 Wagtail的管理员界面是完全自定义的,不包含任何此类样式或脚本。

© www.soinside.com 2019 - 2024. All rights reserved.