跳转到主要内容

Wagtail管理员模型选择器

项目描述

一个为Wagtail提供方便方法的插件,用于设置任意模型的选择器模态。

安装

使用pip安装

pip install wagtail-modelchooser

然后将它添加到您的INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    'wagtailmodelchooser',
    # ...
]

它与Wagtail 4.0及更高版本兼容。对于旧版本的Wagtail,请检查该软件包的早期版本。

快速入门

要启用您模型的选择器,您必须注册该模型。对于简单情况,使用@register_model_chooser装饰您的模型

from django.db import models

from wagtailmodelchooser import register_model_chooser


@register_model_chooser
class Author(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        # The ``str()`` of your model will be used in the chooser
        return self.name

然后,您可以在编辑处理定义中使用FieldPanel,或者在StreamField定义中使用ModelChooserBlock

from wagtail.wagtailcore.blocks import RichTextBlock
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore.models import Page
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtailmodelchooser.blocks import ModelChooserBlock

class Book(Page):
    name = models.CharField(max_length=255)
    author = models.ForeignKey(Author)

    content_panels = [
        FieldPanel('name'),
        FieldPanel('author'),
    ]

class ContentPage(Page):
    body = StreamField([
        ('text', RichTextBlock()),
        ('author', ModelChooserBlock('books.Author')),
    ])

    content_panels = [
        StreamFieldPanel('body'),
    ]

自定义选项

如果您想自定义模型选择器模态的内容或行为,您有多种选择。以下是一些示例来展示这些选项。

如果您想在弹出窗口中添加一个额外的过滤器字段,您可能可以这样操作

from django.db import models

from wagtailmodelchooser import register_model_chooser, Chooser


class City(models.Model):
    name = models.CharField(max_length=255)
    capital = models.BooleanField()

    def __str__(self):
        # The ``str()`` of your model will be used in the chooser
        return self.name

@register_model_chooser
class CityChooser(Chooser):
    model = City
    modal_template = 'app_name/city_modal.html'
    modal_results_template = 'app_name/city_modal_results.html'

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.GET.get('capital'):
            qs = qs.filter(capital=request.GET.get('capital') == '0')

        return qs

由于 wagtailmodelchooser 主要基于已在Wagtail中找到的 ChooserViewSet 功能,如果您希望进行更深入的定制,建议直接使用该功能。

项目详情


下载文件

下载您平台对应的文件。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。

源代码分发

wagtail-modelchooser-4.0.1.tar.gz (9.9 kB 查看哈希值)

上传时间 源代码

构建分发

wagtail_modelchooser-4.0.1-py2.py3-none-any.whl (12.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面