Django models 如何在Wagtail admin中检索当前用户对象并将其分配给字段?
我有一些Django模型,我使用wagtail的modelAdmin在管理中显示。模型中很少有字段引用用户模型。因为我没有创建表单/页面,而且它是由wagtail处理的,所以在保存当前用户对象时,如何将其传递给字段?也就是说,应将当前用户对象分配给创建和更新者字段 请参阅下面的代码片段,当前我通过查询手动分配用户,而不是获取当前用户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.
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
做你想做的事。我希望其他人能帮上忙。