1

在我建立的 Wagtail 网站上,我有一个模型类型,可由没有完全管理员权限的经过身份验证的用户编辑。他们只能保存为草稿或提交更改以供审核。我遇到的问题是 Wagtail 在执行这两个操作后重定向的位置不一致。保存草稿会将用户带回到他们刚刚打开的编辑屏幕,并附上说明草稿已保存(很好)的说明。提交审核会将用户返回到父页面的管理浏览视图,该视图显示列表中的所有兄弟节点。他们无法编辑该列表中的绝大多数项目,因此我认为这对于非管理员用户来说是令人困惑的。我想让“提交审核”操作检测用户是否属于管理员以外的组(或者,如果失败,

我在我的模型定义中尝试了这个,但没有奏效:

def save(self, *args, **kwargs):
  #do some field value manipulations here before saving
  super().save(*args, **kwargs)
  if self.id:
    if self.has_unpublished_changes:
      return HttpResponseRedirect('/admin/pages/' + str(self.id) + '/edit/')

我可能需要挂钩和覆盖某种 Wagtail 管理操作,而不是尝试在 models.py 中完成此操作,但我对此没有太多经验,因此我需要更好地了解要更改的内容和在哪里。

4

1 回答 1

2

设置一个after_create_pageafter_edit_page钩子:https ://docs.wagtail.io/en/stable/reference/hooks.html#after-create-page

为此,请wagtail_hooks.py在项目的其中一个应用程序中添加一个文件。您可以在此处定义通过管理员创建或编辑页面后要调用的函数,例如:

from wagtail.core import hooks

@hooks.register('after_create_page')
def redirect_after_page_create(request, page):
    if not request.user.is_superuser:
        return HttpResponseRedirect('/admin/pages/' + str(page.id) + '/edit/')

@hooks.register('after_edit_page')
def redirect_after_page_edit(request, page):
    if not request.user.is_superuser:
        return HttpResponseRedirect('/admin/pages/' + str(page.id) + '/edit/')
于 2020-09-01T10:09:21.710 回答