2017-08-13 11 views
0

のために、私は2つのフィールドを自動補完したい、モデルです。Djangoのからrequest.userは、管理者と一般ユーザ

通常のユーザーの場合は、私のビューからget request.userを使用することができます(サイト上のいくつかのソリューションが見つかりました)。しかし、私はビューを制御しないので、これはadmin/staffの場合ではありません。 save関数を上書きすることによって、モデルレベルで解を探します。

答えて

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?

+0

を与える空/空白/ nullになりますが、私はビューを制御しません。リンクが私を助け、私はその投稿からの答えを修正し、いつ作成され、いつ変更されるのかを区別しました – user3541631

1

は、ミドルウェアヘルプあなたによってデフォルトのユーザーとの溶液であってもよいです。

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

+0

質問自体内の溶液のポスト関連部分:

、私はあなたの質問をunderstantなかったので、これはあなたが探しているものであるかもしれおそれ。リンクのみの回答は受け入れられません –

+0

ありがとうございますが、8年前のスレッドですので、Django 1.11の方が良いと思いました。ミドルウェアを使用するということは、私がどこにでも置くことを意味し、私は本当にそれを望んでいません。 – user3541631

0

ちょうどあなたのフィールドに追加し、非常に単純です:編集可能=このように偽 :

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

通常のモデルとadminのモデル/フォームの両方でrequest.userを取得する必要がありますが、 "editable = False"とは何も関係ありません。私はこの情報を取得しない場合、フィールド/外部キーは、私が知っているビューでエラー – user3541631

関連する問題