0

我想自动完成 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(在网站上找到了一些解决方案),但对于管理员/员工来说,情况并非如此,因为我不控制视图,所以我正在寻找一个通过覆盖保存功能在模型级别的解决方案。

4

3 回答 3

1

可能是 Middleware 为您提供默认用户的解决方案。

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

于 2017-08-13T14:06:35.463 回答
1
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?

于 2017-08-17T09:48:31.453 回答
0

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

created_by = models.ForeignKey(settings.AUTH_USER_MODEL, editable=False, related_name='created_by')
于 2017-08-17T08:19:13.860 回答