Django использует объект Session
с session_key
в качестве первичного ключа, это также значение, которое вы можете получить с помощью request.session.session_key
.
Таким образом, вы можете сделать ForeignKey
к объекту Session
, над которым в данный момент работает пользователь. Преимущество этого заключается в том, что если очистить Session
, то все данные, хранящиеся в этом сеансе, также будут удалены.
Так что если у вас есть MyModel
you w * sh для связи с сеансом вы можете использовать:
from django.contrib.sessions.models import <b>Session</b>
class MyModel(models.Model):
# …
session = models.ForeignKey(Session, on_delete=models.CASCADE)
Ключ сеанса можно получить с помощью:
# add a record
if not request.session.session_key:
request.session.create()
session_id = request.session.session_key
MyModel.objects.create(<b>session_id=session_id</b>)
Остерегайтесь того, что сеансы могут истечь, или «недоступен», если пользователь удаляет их браузерные куки. Хотя хранение данных, относящихся к сеансу, по своей сути не является плохой идеей, оно не очень постоянное .