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?
我想自动完成 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?