Django models 如何在Wagtail admin中检索当前用户对象并将其分配给字段?

Django models 如何在Wagtail admin中检索当前用户对象并将其分配给字段?,django-models,wagtail,Django Models,Wagtail,我有一些Django模型,我使用wagtail的modelAdmin在管理中显示。模型中很少有字段引用用户模型。因为我没有创建表单/页面,而且它是由wagtail处理的,所以在保存当前用户对象时,如何将其传递给字段?也就是说,应将当前用户对象分配给创建和更新者字段 请参阅下面的代码片段,当前我通过查询手动分配用户,而不是获取当前用户 from django.db import models from django.conf import settings from django.contrib.

我有一些Django模型,我使用wagtail的modelAdmin在管理中显示。模型中很少有字段引用用户模型。因为我没有创建表单/页面,而且它是由wagtail处理的,所以在保存当前用户对象时,如何将其传递给字段?也就是说,应将当前用户对象分配给创建和更新者字段

请参阅下面的代码片段,当前我通过查询手动分配用户,而不是获取当前用户

from django.db import models
from django.conf import settings
from django.contrib.auth import get_user_model

from wagtail.admin.forms import WagtailAdminPageForm

STATUS_CHOICES = (
    (1, 'Active'),
    (2, 'Inactive')
)


class BasePageForm(WagtailAdminPageForm):

    def save(self, commit=True):
        auth_user_model = get_user_model()
        default_user = auth_user_model.objects.get(username='admin')
        page = super().save(commit=False)

        if not page.pk:
            page.created_by = default_user
            page.updated_by = default_user
        else:
            page.updated_by = default_user

        if commit:
            page.save()
        return page


class BaseModel(models.Model):
    created_by = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='created%(app_label)s_%(class)s_related'
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='updated%(app_label)s_%(class)s_related'
    )
    updated_at = models.DateTimeField(auto_now=True)
    status = models.IntegerField(choices=STATUS_CHOICES, default=1)

    class Meta:
        abstract = True  # Set this model as Abstract

    base_form_class = BasePageForm

请出示您的模型。@DanSwain,查看更新,谢谢!几个月前,我出于类似的需要对此进行了研究(在保存模型实例时尝试访问
请求
对象。Wagtail的
ModelAdmin
不是基于Django的。Django的
ModelAdmin
有一个
save\u model
方法,您可以覆盖,但我只是再次查看了
ModelAdmin
定义的代码,仍然看不到任何方法来覆盖它。)用Wagtail的
ModelAdmin
做你想做的事。我希望其他人能在这里提供帮助。请展示你的模型。@DanSwain,查看更新,谢谢!我几个月前研究过这个,也是为了类似的需要(在保存模型实例时尝试访问
请求
对象。Wagtail的
ModelAdmin
不是基于Django的。Django的
ModelAdmin
有一个
save\u model
方法,您可以覆盖,但我只是再次查看了
ModelAdmin
定义的代码,仍然看不到任何方法来覆盖它。)用Wagtail的
ModelAdmin
做你想做的事。我希望其他人能帮上忙。