Добрый день. Такой вопрос:
Делаю корзину на сайте, хочу хранить товары в корзине в БД.
Создал модель "ProductInCart" в которой поле есть "session_key" которое является внешним ключом на модель Session:
session_key = models.ForeignKey(Session, on_delete=models.CASCADE, related_name='session_keys')
Таким образом при удалении сессии у меня удаляются записи из "ProductInCart" которые уже не актуальны.
Это всё прекрасно работает, до тех пор пока пользователь авторизован.
У не авторизованного же пользователя появляется ошибка "django.contrib.sessions.models.Session.DoesNotExist: Session matching query does not exist"
Новую запись в модели "ProductInCart" создаю так:
session_key = request.session.session_key
ProductInCart.objects.create(product=Products.objects.get(slug=slug), session_key=Session.objects.get(session_key=session_key))
Я понимаю, что данную ошибку получаю из-за того, что у не авторизованного пользователя нет объекта сеанса.
Могу ли я как то перед тем, как создаю объект в модели "ProductInCart" создать объект Session у не авторизованного пользователя? Или же получить session_key если он есть?
Спасибо!
P.S.
Код ниже не решает мою проблему=(
session_key = request.session.session_key
if not session_key:
request.session.cycle_key()
Updated 18 Nov. 2020, 19:25 by MozhetZavtra.