Объект сеанса доступа получает строку после миграции Django 1.8
Я перенес свой проект электронной коммерции в django 1.8, и я не могу получить доступ к сеансу магазинной тележки. Я сохраняю пользователей shopcart как объект в сеансе, а затем запрашиваю. Этот объект теперь считается строкой, поэтому я не могу добавлять / удалять / etc элементы или изменять его.
cart = get_shopping_cart(request) #if I print(cart) I get <obj>
cart.add_item(prod, prod.img, prod.UMP, int(quan), prod.price) #error
def get_shopping_cart(request, cart_class=Cart):
return request.session.get('cart', None) or cart_class()
Я попытался добавить session_serialize в settings.py, но это не работает. Я думаю, что это связано с этой новой версией Django, но какой будет правильный способ ее решения? Должен ли я изменить всю сессию, чтобы хранить только идентификатор (объект должен храниться в БД?)? или написать свой собственный сериализатор?
Благодарю.
Моя тележка:
class Cart(object):
class Item(object):
def __init__(self, itemid, product, image, quantity=1, price=0):
self.image = image
self.itemid = itemid
self.product = product
self.quantity = quantity
self.price = price
def __init__(self):
self.items = list()
self.unique_item_id = 0
1 ответ
Хранение cart_id
в сеансе есть одна возможность. Другая возможность - изменить вас get_shopping_cart
класс, чтобы десериализовать строку, хранящуюся в сеансе.
def get_shopping_cart(request, cart_class=Cart):
if 'cart' in request.session:
session = string_to_cart(request.session['cart'])
else:
session = cart_class()
return session