Как получить вариацию в идентификаторе товара

Я не получаю возврат по цвету и размеру, приходит только название товара.
И да, мои request.POST['color'] и request.POST['size'] получают значения, но в виде имен, а не в id.

def add_to_cart(request, product_id):
        product = Product.objects.get(id=product_id)
        variation_list = []
    
        if request.method == "POST":
            color = request.POST['color']
            size = request.POST['size']
            
            try:
                variation = Variation.objects.get(product=product, color__name__exact=color, size__name__exact=size)
                variation_list.append(variation)
            except:
                pass
    
        return HttpResponse(variation_list)

HttpResponse

Поскольку HttpResponse будет возвращать только необработанный текст, вы должны явно указать, что вы хотите показать, он не может делать полные объекты и, вероятно, просто выполняет метод модели __str__ в настоящее время

Пример:

o = ''
for i in variation_list:
    s += '{0},{1},{2}\n'.format(i.name, i.color.name, i.size.name)

return HttpResponse(s)

Или вы можете просто отобразить шаблон, как обычно, с помощью цикла, например:

{% for i in variation_list %}
{{i.name}},{{i.color}}, etc
{% endfor %}

Другая возможность, лично я использую Json:

d = []
for i in variation_list:
    d.append({
        'name': i.name,
        'color': i.color.name,
        'size': i.size.name,
    })
import json
return HttpResponse(json.dumps(d), content_type="application/json")
Вернуться на верх