JSON сериализуемая проблема в Django при попытке использовать сеанс - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь добавить процесс корзины в свой объект электронной коммерции, созданный с помощью Python Django Framework. Но когда я пытаюсь проверить данные, аутентифицирован посетитель или нет, и пытаюсь вернуть данные из менеджера моделей, я сталкиваюсь с сериализуемой проблемой json. В Bellow я даю вам пример кода,

Вот мой файл просмотра:

from django.shortcuts import render
from .models import Cart
from django.core import serializers

# Create your views here.

def cart_create(user=None):
    cart_obj = Cart.objects.create(user=None)
    print('New Cart Created')
    return cart_obj

def cart_home(request):

    cart_id = request.session.get("cart_id", None)
    qs = Cart.objects.filter(id=cart_id)
    if qs.count() == 1:
      print("Cart Id exists")
      cart_obj = qs.first()
      if request.user.is_authenticated and cart_obj.user is None:
        cart_obj.user = request.user
        cart_obj.save()
    else:
      #cart_obj = cart_create()
      cart_obj = Cart.objects.new(user=request.user)
      request.session['cart_id'] = cart_obj


    return render(request, "carts/home.html")

Вот мой файл модели:

from django.db import models
from django.conf import settings
from products.models import Product
from django.core.serializers import serialize

User = settings.AUTH_USER_MODEL

# Create your models here.

class CartManager(models.Manager):

    def new(self, user=None):
        print(user)
        user_obj = None
        if user is not None:
            if user.is_authenticated:
                user_obj = user
        return self.model.objects.create(user=user)




class Cart(models.Model):
    user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
    products = models.ManyToManyField(Product, blank=True)
    total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
    updated = models.DateTimeField(auto_now=True)
    timestamp = models.DateTimeField(auto_now_add=True)

    objects = CartManager()

    def __str__(self):
        return str(self.id)

Вот сгенерированная ошибка :

enter image description here

Понятия не имею, почему возникла эта ошибка. Я попробовал множество возможных способов решения этой проблемы. Но не могу решить это. Может ли кто-нибудь помочь мне ..

1 Ответ

1 голос
/ 04 мая 2020

Заменить строку request.session['cart_id'] = cart_obj на request.session['cart_id'] = cart_obj.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...