Я хочу сохранить некоторые вещи в базе данных и использую текущий сеанс в качестве внешнего ключа : from models.py
class Visited(models.Model):
session = models.ForeignKey(Session)
page = models.ForeignKey(Page)
times_visited = models.PositiveIntegerField()
ip_address = models.IPAddressField()
date_last_visited = models.DateTimeField()
def __unicode__(self):
return u'(%s, %s)' % (str(self.session.session_key), str(self.page.name))
Чтобы создать новую запись для этой модели, я использую следующее для получения текущего сеанса (в views.py):
Session.objects.get(session_key=request.session.session_key)
Однако, если это первый раз, когда пользователь посещает сайт, и, таким образом, у вас еще нет файлов cookie, приведенный выше код вызовет ошибку DoesNotExist
.
Я знаю, что даже если сейчас установлен файл cookie, вы все равно можете устанавливать объекты сеанса. Так что я могу придумать несколько приемов, чтобы сделать эту работу, например:
Но я хотел бы лучшее решение, с которым я мог бы жить. Есть ли какие-нибудь общепринятые или хорошие решения этой проблемы? Или я вообще правильно ссылаюсь на сеансы в своей модели?
Спасибо за вашу помощь.