如何在 Django 会话模型中设置自定义字段?

Utk*_*tku 6 python django session

我已经根据这个在 Django 中扩展了会话。简而言之,我添加了一个名为的字段account_id来保存会话所属用户的用户 ID。

一切正常,除了account_id我添加的自定义字段未在登录时设置。这样做:

from django.contrib import auth
from MyApp.models import CustomSession

def login(request):
    username = request.POST['username']
    password = request.POST['password']
    user = auth.authenticate(username=username, password=password)
    if user is not None:
        try:
            auth.login(request, user)
            session_key = request.session.session_key
            # CODE HERE
            if session_key is not None:
                return HttpResponse(json.dumps({'status': 'Success'}))
            else:
                return HttpResponse(json.dumps({'status': 'Fail'}))
Run Code Online (Sandbox Code Playgroud)

我尝试将以下内容放入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
    
    Run Code Online (Sandbox Code Playgroud)
  3. request.session.account_id = user.id
  4. request.session[account_id] = user.id

在这些尝试中的每一个中,account_idNULL在数据库中。

我在这里缺少什么?

Dan*_*man 1

您忽略了 CustomSession 是一个模型这一事实;您需要保存实例,而不是像版本 2 中那样对其设置“已修改”。

session = CustomSession.objects.get(pk=session_key)
session.account_id = user.id
session.save()
Run Code Online (Sandbox Code Playgroud)