При изменении цены в приложении ecommerce путем выбора другого размера я получаю ошибку неподдерживаемого типа операнда, пожалуйста, решите эту проблему

неподдерживаемый тип(ы) операнда(ов) для +: 'int' и 'str' Внутренняя ошибка сервера: /product/t-shirts/ Traceback (последний последний вызов): Файл "C:\Python311\Lib\site-packages\django\core\handlers\exception.py", строка 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ Файл "C:\Python311\Lib\site-packages\django\core\handlers\base.py", строка 204, in _get_response self.check_response(response, callback) Файл "C:\Python311\Lib\site-packages\django\core\handlers\base.py", строка 332, in check_response raise ValueError( ValueError: Представление products.views.get_product не вернуло объект HttpResponse. Вместо этого оно вернуло None. [20/Jul/2024 12:48:11] "GET /product/t-shirts/?size=XL HTTP/1.1" 500 68697 неподдерживаемые типы операндов для +: 'int' и 'str' Внутренняя ошибка сервера: /product/t-shirts/

Traceback (most recent call last):

Файл "C:\Python311\Lib\site-packages\django\core\handlers\exception.py", строка 55, in inner

response = get_response(request)
           ^^^^^^^^^^^^^^^^^^^^^

File "C:\Python311\Lib\site-packages\django\core\handlers\base.py", line 204, in _get_response

self.check_response(response, callback)

File "C:\Python311\Lib\site-packages\django\core\handlers\base.py", line 332, in check_response

raise ValueError(ValueError: The view products.views.get_product didn't return an HttpResponse object. It returned None instead.

[20/Jul/2024 12:48:11] "GET /product/t-shirts/?size=XL HTTP/1.1" 500 68697

"это моя страница products.models"

from django.db import models

from base.models import BaseModel

from django.utils.text import slugify

class Category(BaseModel):

category_name=models.CharField(max_length=100)

slug=models.SlugField(unique=True ,null=True , blank=True)

category_image=models.ImageField(upload_to="categories")



def save(self,*args,**kwargs):

    self.slug=slugify(self.category_name)

    super(Category,self).save(*args,**kwargs)

    

def __str__(self) ->str:
    return self.category_name

        

class ColorVariant(BaseModel): color_name= models.CharField(max_length=100)

price= models.CharField(max_length=100)


def __str__(self) ->str:

    return self.color_name

class SizeVariant(BaseModel): size_name= models.CharField(max_length=100)

price= models.CharField(max_length=100)



def __str__(self) ->str:

    return self.size_name

class Product(BaseModel): product_name=models.CharField(max_length=100)

slug=models.SlugField(unique=True ,null=True , blank=True)

categorys=models.ForeignKey(Category, on_delete=models.CASCADE,related_name="products",blank=False, 

null=True) price=models.IntegerField()

products_description=models.TextField()

color_variant=models.ManyToManyField(ColorVariant, blank=True)

size_variant=models.ManyToManyField(SizeVariant, blank=True)



def save(self,*args,**kwargs):
    self.slug=slugify(self.product_name)
    super(Product,self).save(*args,**kwargs)
    

def __str__(self) ->str:

    return self.product_nam


def get_product_price_by_size(self,size):


    return self.price + str(SizeVariant.objects.get(size_name=size).price)

class ProductImage(BaseModel):

products=models.ForeignKey(Product, on_delete=models.CASCADE,related_name="product_images")


image=models.ImageField(upload_to="product")

В модальном окне продукта попробуйте обновить метод класса -

Это -

def get_product_price_by_size(self, size):
    return self.price + str(SizeVariant.objects.get(size_name=size).price)

к этому -

def get_product_price_by_size(self, size):
    return str(self.price) + str(SizeVariant.objects.get(size_name=size).price)
Вернуться на верх