鹡鸰:在多语言网站中使用模型管理员



我的网站上有这个"PageModel",并希望使用modeladmin在sperate菜单中添加/编辑它们。

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

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

城市 -> EN -> 伦敦

城市 -> DE -> 柏林

我该怎么做?

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

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

编辑:

如果要向 Wagtail 管理区域中的菜单添加其他菜单项,则可能需要考虑改用应用的ModelAdminGroup类,并在返回之前重写 get_submenu_items 方法以将自定义MenuItem实例追加到列表中。如果可以复制列表顶部"添加"按钮上使用的 URL 模式,则应获得与上述相同的条件"选择父项"功能。

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

最新更新