Django request.user 是模型,适用于管理员和普通用户

Django request.user is model, for admin and normal user

我想自动完成 2 个字段:

created_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='created_by')
updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='updated_by')

普通用户和 django 管理员。

如果对于普通用户,我可以使用 get request.user 从我的角度来看(在网站上找到了一些解决方案),但是 admin/staff 不是这种情况,因为我无法控制视图,所以我正在通过覆盖保存功能来搜索模型级别的解决方案。

可能是中间件默认用户的解决方案帮到你了。

django-populate-user-id-when-saving-a-model

非常简单,只需在您的字段中添加:editable=False 像这样:

created_by = models.ForeignKey(settings.AUTH_USER_MODEL, editable=False, related_name='created_by')
from django.contrib.auth.models import User

created_by = models.ForeignKey(User, related_name='created_by')

updated_by = models.ForeignKey(User, related_name='updated_by')

那么在你看来,你可以这样做:

form.created_by = request.user
form.updated_by = request.user

它将由执行该操作的当前用户自动完成。

可能是我没有理解你的问题,所以这可能就是你要找的:How to auto insert the current user when creating an object in django admin?