Как получить вариацию в идентификаторе товара
Я не получаю возврат по цвету и размеру, приходит только название товара.
И да, мои 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 будет возвращать только необработанный текст, вы должны явно указать, что вы хотите показать, он не может делать полные объекты и, вероятно, просто выполняет метод модели __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")