2011-06-18 4 views
1

セッション管理について奇妙な質問があります。認証されていないユーザーのセッション管理

フォームチェーンを実装した後、フォームが完成した後、モデルはデータベースに保存されますが、そのモデルのフィールドはcreate_user,update_userというようになります。

これらのフィールドを埋めるためにはもちろん、認証されたユーザーがいるはずです。しかし、私のフォームチェーンは匿名ユーザーでも埋め込むことができます。彼のuser_idcreate_userupdate_userフィールドに割り当てられるべきである彼のセッションフラッシュし前にシステムへの匿名ユーザー登録やログインの場合

..

、このようなシステムを実装するための最良の方法は何ですか?

私は状況を説明したいと思います。

ありがとうございます。

答えて

1

モデルは、例えば、あなたのセッションのリストにモデルのインスタンス保存されると願っています:

views.py:ログイン方法で

... 
form = DataForm(request.POST) 
if form.is_valid(): 
    instance = form.save() 
    instances = request.session.get('filed_instances', []) 
    instances.append(instance) 
    request.session['filed_instances'] = instances 

(あなたの実装のオフコースに依存して)ログインした後で、次のようにこれらを更新することができます:

instances = request.session.get('filed_instances') 
if instances: 
    for instance in instances: 
     instance.create_user = request.user 
     instance.update_user = request.user 
     instance.save() 
0

ログインしたユーザー名をセッション変数に入れます。セッション開始時に、その変数が設定されていない場合は、空の文字列、nullまたは匿名ユーザーを表す他の値に設定します。データベースにデータを保存するときよりも、その名前を作成/更新ユーザー名として使用します。 私はそれが役に立った:)

+0

私のcreate_userはユーザテーブルを参照していることを忘れています。だから私はユーザーオブジェクトを持っている必要があります。私はまた、create_userをnullのように、そのようなメソッドを検討し、ログインした後、セッションに保存されたモデルがあるかどうかをチェックし、create_userを認証されたユーザーに設定します。しかし、私はその正しさを確信していません... – brsbilgic