2017-01-30 4 views
0

私はDjangoでセッションをthisに拡張しました。つまり、セッションが属するユーザーのユーザーIDを保持するために、account_idという名前のフィールドを追加しました。Djangoセッションモデルでカスタムフィールドを設定する方法は?

すべてが正常に動作しますが、カスタムフィールド以外はaccount_idログイン時に追加されていません。これを行うには:

私はCODE HEREに次のように書き込んでみました。しかし、それらのどれも働いていない。これらの試みのそれぞれにおいて

  1. request.session.model.account_id = user.id

  2. session = CustomSession.objects.get(pk=session_key) 
    session.account_id = user.id 
    session.modified = True 
    
  3. request.session.account_id = user.id
  4. request.session[account_id] = user.id

account_idがデータベースにNULLあります。

私はここで何が欠けていますか?

+1

これを行う理由は何ですか? 99.9%のケースでは、このようにユーザーとセッションを接続する必要はありません。 – trixn

+0

@trixn私は簡単にオンラインユーザーのリストを取得しようとしています。 – Utku

+0

これはどのように役立ちますか? –

答えて

1

CustomSessionがモデルであるという事実はありません。インスタンスを保存する必要があります。バージョン2と同じように、「変更済み」を設定しないでください。

session = CustomSession.objects.get(pk=session_key) 
session.account_id = user.id 
session.save() 
+0

運がよかったです。これはどちらもうまくいかなかった。 'account_id'はまだ' NULL'です。 – Utku

+0

私の推測では、 'login'メソッドを終了したときに、' account_id'を省略しても、Djangoは何とかセッションを再保存しています。 – Utku

関連する問題