Size: a a a

Django [ru] #STAY HOME

2020 June 13

Ю

Юрий in Django [ru] #STAY HOME
Роман Сарнов
Подскажите пожалуйста, почему, когда я пытаюсь сохранить product = Product.objects.get(pk=pk) в словарь, то возникает Object of type Product is not JSON serializable, а в гугле нашел такое решение https://pastebin.com/2psLQ6hQ и тут они сохраняют в словарь без ошибок?
что значит сохранить в словарь?
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
В сессию точнее
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
В сессию точнее
по дефолту сессия умеет только простой json
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
В сессию точнее
можно использовать для сессии pickleserializer, но он считается не очень секьюрным и нестабильным
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
В сессию точнее
или можешь написать свой session serializer который будет поддерживать то, что ты хочешь
это немного гемморно, но решаемо
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
В сессию точнее
но так как быстрых и приятных вариантов нет, я бы сначала попытался все-таки не писать модельные объекты в сессию
может быть PK будет достаточно?
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
Так а мне в первую очередь интересно, почему тот код работает, а мой нет. Модели одинаковые
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
Так а мне в первую очередь интересно, почему тот код работает, а мой нет. Модели одинаковые
потому, что они пишут словарь, а не model object
он как раз сериализуруется в json
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
Не понял. Они же тоже в сессию сохраняют Product
источник

DV

D V in Django [ru] #STAY HOME
В городе
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
Не понял. Они же тоже в сессию сохраняют Product
покажи пожалуйста
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
products = Product.objects.filter(id__in=product_ids)
       for product in products:
           self.cart[str(product.id)]['product'] = product
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
products = Product.objects.filter(id__in=product_ids)
       for product in products:
           self.cart[str(product.id)]['product'] = product
а где тут сессия?
источник

D

D in Django [ru] #STAY HOME
Nikolay Cherniy
Молодец! Теперь выкладывай, делись с остальными)
вот, может кому пригодится: https://pastebin.com/R3JJU0Br )
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
self.session = request.session
       cart = self.session.get(settings.CART_SESSION_ID)
       if not cart:
           # save an empty cart in the session
           cart = self.session[settings.CART_SESSION_ID] = {}
       self.cart = cart
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
Это в ините
источник

D

D in Django [ru] #STAY HOME
Alex Dem
тоже очень люблю теги :)
у джанго с шаблонами вообще очень круто, мне кажется, отличная система получилась в купе с тегами и context processors
я вот сравниваю с Рельсами и толи я поопытней стал, толи тут и правда мне все как-то больше нравится)
источник

AD

Alex Dem in Django [ru] #STAY HOME
Роман Сарнов
self.session = request.session
       cart = self.session.get(settings.CART_SESSION_ID)
       if not cart:
           # save an empty cart in the session
           cart = self.session[settings.CART_SESSION_ID] = {}
       self.cart = cart
здесь никто не пишет model object в сессию
источник

AD

Alex Dem in Django [ru] #STAY HOME
там же идет работа со словарем
источник

Ю

Юрий in Django [ru] #STAY HOME
@romansarnov тебе просто надо decimal перевести в простой тип int/float/string
источник