2017-08-13 119 views
0

我想自动完成2场:Django的request.user是模型,为管理员和普通用户

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(在网站上找到一些解决方案),但管理员/员工并不是这样,因为我不控制视图, m通过覆盖保存功能在模型级搜索解决方案。

回答

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 

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

可能是我没有understant你的问题,所以可能这是你在找什么:在问题本身的解决方案How to auto insert the current user when creating an object in django admin?

+0

我知道,但在管理我不控制视图。该链接帮助我,我修改了该帖子的答案,以区分何时创建和何时更改 – user3541631

1

中间件可以帮助您解决缺省用户的问题。

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

+0

职位相关的部分。链接只回答不接受 –

+0

谢谢,但是是一个8岁的线程,所以我认为有更好的Django 1.11;使用中间件意味着我在任何地方推送它,并且我不希望 – user3541631

0

非常简单,只需添加到您的领域:编辑=假 像这样:

created_by = models.ForeignKey(settings.AUTH_USER_MODEL, editable=False, related_name='created_by') 
+0

需要在普通模型和管理模型/窗体中获取request.user,与“editable = False”无关。如果我没有得到这个信息,字段/外键将为空/空白/空,这将给我错误 – user3541631

相关问题