2 回答

TA貢獻1829條經驗 獲得超9個贊
您收到該錯誤是因為數據庫中不再有要更新的會話,您已經刪除了其上方 2 行的所有活動會話。要解決這個問題,只需在清理它們時省略當前活動的會話:
@receiver(user_logged_in)
def remove_other_sessions(sender, user, request, **kwargs):
# remove other sessions
old_sessions = Session.objects.filter(usersession__user=user)
if request.session.session_key:
old_sessions = old_sessions.exclude(session_key=request.session.session_key)
old_sessions.delete()
# save current session
request.session.save()
# create a link from the user to the current session (for later removal)
UserSession.objects.get_or_create(
user=user,
session=Session.objects.get(pk=request.session.session_key)
)

TA貢獻1744條經驗 獲得超4個贊
@GwynBleidD 的回答很好!但這里有一個小錯誤:
if request.session.session_key:
old_sessions = old_sessions.exclude(session_key=request.session.session_key)
應該寫成:
if request.session.session_key:
old_sessions = old_sessions.exclude(session_key=request.session.session_key).delete()
else:
old_sessions.delete()
否則當您第二次嘗試在同一臺計算機上登錄時會出現錯誤。
添加回答
舉報