1

我的网站上有这个“PageModel”,想使用 modeladmin 在单独的菜单中添加/编辑它们。

from cities.models import City

class City(Page):
    cityobject = models.ForeignKey(City, on_delete=models.SET_NULL, null=True, blank=True)
    streamfield  = StreamField(BasicStreamBlock, null=True, blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('cityobject', classname="full"),
        StreamFieldPanel('streamfield'),
    ]

我还将这种方法用于多语言网站: http ://docs.wagtail.io/en/v1.13.1/advanced_topics/i18n/duplicate_tree.html

我想要的是在 wagtail 管理员中在资源管理器旁边有一个“城市”按钮来添加城市。但在添加它们之前,我想选择哪个网站。例如:

城市 -> CN -> 伦敦

城市 -> DE -> 柏林

我怎样才能做到这一点?

4

1 回答 1

0

如果您为可以存在于树的多个部分中的页面类型注册 ModelAdmin 类,当您使用列表顶部的“添加”按钮添加新页面时,应该会自动提示您选择一个它的父级(在显示页面编辑器界面之前)。

行为实际上会根据登录用户的权限而改变。例如,如果用户可以将页面添加到树的任何部分,那么他们将被提示选择父页面应该是什么。但是,对于权限有限的用户,他们可能只能将页面添加到可能的父级之一 - 一个可能的选项将被自动识别,并且不会提示用户。

编辑:

如果您想在 Wagtail 管理区域的菜单中添加其他菜单项,您可能需要考虑ModelAdminGroup为您的应用程序使用一个类,并覆盖get_submenu_items方法以MenuItem在返回之前将自定义实例附加到列表中。如果您可以复制列表顶部“添加”按钮上使用的 URL 模式,您应该获得与上述相同的条件“选择父级”功能。

如果您以前没有使用过ModelAdminGroup该类,可以在文档中找到使用示例:http: //docs.wagtail.io/en/latest/reference/contrib/modeladmin/#a-more-complicated-example

于 2018-01-24T17:55:46.820 回答