我想覆盖 create.html
和 edit.html
用于从Wagtails'PageModel'衍生的模型。
如果我理解 文件 正确的,它应该和指定属性一样简单。
class MyAdmin(ModelAdmin):
model = MyPage
create_template_name = "myapp/create.html"
edit_template_name = "myapp/edit.html"
我的模板位于 projectroot/templates/myapp
. 如果我的模型是一个Django模型,它可以正常工作,但对于一个 PageModel
基于模型的创建视图仍然使用 wagtailadmin/pages/create.html
. 我也试过文档中提到的其他位置模式wo成功。
是否有可能改变编辑和创建模板,为一个 PageModel
? 还是和视图一样的限制,即只适用于 index.html
和 inspect.html
可以被覆盖吗?
ModelAdmin
并不提供创建、编辑或删除页面模型的功能,因为按 说明书.
注意:modeladmin只为非页面类型模型(即不扩展wagtailcore.model.Page的模型)提供 "创建"、"编辑 "和 "删除 "功能。如果您的模型是'页面类型'模型,自定义任何以下将不会有任何效果。
这可能有点混乱,因为 ModelAdmin
系统似乎也适用于页面模型,但还有一些其他的方法来修改页面的编辑方式。这些方法不会被扩展到 ModelAdmin
区域。
MyPage
模型base_form_class
在你的页面模型上。WagtailAdminPageForm
延伸 Django的ModelFormMeta类。例子
from django import forms
from django.db import models
from wagtail.admin.forms import WagtailAdminPageForm
from wagtail.core.models import Page
class EventPageForm(WagtailAdminPageForm):
# ...
class MyPage(Page):
# ...
base_form_class = MyPageForm
要为普通的(例如在Wagtail用户栏或资源管理器上点击编辑页面)页面编辑界面定制创建和编辑视图,您需要使用以下功能 鹡鸰钩. 在这里,您可以访问请求,因此您很可能能够确定您是否在。ModelAdmin
区域。
创建一个名为 wagtail_hooks.py
并提供一个钩子来返回一个自定义的响应(这将需要由你的自定义视图来渲染)。
有单独的钩子用于 before_create_page
和 before_edit_page
例子来自 before_create_page
文件 下面是:
from wagtail.core import hooks
from .models import AwesomePage
from .admin_views import edit_awesome_page
@hooks.register('before_create_page')
def before_create_page(request, parent_page, page_class):
# Use a custom create view for the AwesomePage model
if page_class == AwesomePage:
return create_awesome_page(request, parent_page)
```python