2017-08-13 174 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

相關問題