Объект сеанса доступа получает строку после миграции 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
Другие вопросы по тегам