gpt4 book ai didi

python - 如何访问 wagtail 页面模型中的请求对象?

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:37 25 4
gpt4 key购买 nike

我想动态地将字段的默认值设置为当前登录的用户:

class SimplePage(Page):
author = models.CharField(max_length=255, default=request.user)

我知道get_context,但类属性无法调用实例方法。

def get_context(self, request, *args, **kwargs):
return {
PAGE_TEMPLATE_VAR: self,
'self': self,
'request': request,
}

还有更多想法吗?

基本上,登录管理员的人都应该成为作者的默认用户。

最佳答案

我已经完成了一半,但不确定如何获取 Wagtail edit_handler 系统生成的管理表单的请求上下文。

概述

  • Wagtail 让您 set a custom form为了在其管理中使用,我们通过将 base_form_class 添加到页面模型来实现此目的,该模型将引用扩展 WagtailAdminPageForm 的新类。
  • 然后我们provide initial values通过将 initial 对象传递给父类(super class)的 __init__ 来将其添加到表单。
  • 为了获取身份验证模型(将其与 SimplePage 模型相关联,以及在获取默认值时,我们使用 Django 的内置身份验证/用户帮助程序。

示例

注意:使用 Wagtail 2.0 导入语法。

from django.conf import settings
from django.contrib.auth import get_user_model
from wagtail.wagtailadmin.forms import WagtailAdminPageForm
#... other imports you should already have


class SimplePageForm(WagtailAdminPageForm):

def __init__(self, *args, **kwargs):
auth_user_model = get_user_model()
default_user = auth_user_model.objects.get(username='admin')
initial = {
'title': 'Unhelpful default title for the sake of example',
'author_user': default_user
}
super().__init__(initial=initial, *args, **kwargs)


class SimplePage(Page):

author_user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.PROTECT
)

content_panels = Page.content_panels + [FieldPanel('author_user')]

base_form_class = SimplePageForm

关于python - 如何访问 wagtail 页面模型中的请求对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com