Не получать даже после выбора опции в Django? - PullRequest
0 голосов
/ 06 мая 2020

Я хочу получить опцию, которую пользователь выбирает из моей формы Html select, а затем работать с ней. Я пробовал получить доступ к таким значениям, как print(request.POST.get('variations', None)), и даже после выбора опции он возвращает None. Я не совсем понимаю почему. Может ли кто-нибудь помочь мне с этим? Заранее спасибо!

Моя html форма:

<form class="form" method="POST" action="{{ object.get_add_to_cart_url }}">
  {% csrf_token %}
    {% for var in object.variation_set.all %}
      <h5>Choose {{ var.name }}</h5>
        <select class="form-control mb-4 col-md-4" title="variations">
          {% for item in var.itemvariation_set.all %}
            <option value="{{ item.value }}">{{ item.value|capfirst }}</option>
          {% endfor %}  
        </select>
    {% endfor %}
    <div class="action">
      <button class="btn btn-success">Add to Cart</button>
     <button class="like btn btn-danger" type="button"><span class="fa fa-heart"></span></button>
    </div>
</form>

Я хочу получить то, что выбрал пользователь, и работать с ними в этом представлении, то есть при добавлении продукта в корзину.

My views.py:

@login_required
def add_to_cart(request, slug):
    item = get_object_or_404(Item, slug=slug)

    order_item, created = OrderItem.objects.get_or_create(
        item=item,
        user= request.user,
        ordered=False,
    )
    order_qs = Order.objects.filter(user=request.user, ordered=False)
    if order_qs.exists():
        order = order_qs[0]
        if order.items.filter(item__slug=item.slug).exists():
            order_item.quantity += 1
            order_item.save()
            print(request.POST.get('variations', None)) 
            messages.success(request, "Product quantity has been updated.")
        else:
            order.items.add(order_item)
            print(request.POST.get('variations', None)) 
            messages.success(request, "Product added to cart.")
            return redirect("order-summary")
    else:
        ordered_date = timezone.now()
        order = Order.objects.create(user=request.user, ordered_date=ordered_date)
        order.items.add(order_item)
        print(request.POST.get('variations', None)) 
        messages.success(request, "Product added to cart.")
        return redirect("order-summary")
    return redirect("order-summary")

1 Ответ

2 голосов
/ 06 мая 2020

Измените атрибут «title» <select>, чтобы он назывался «name».

<select class="form-control mb-4 col-md-4" title="variations">

на

<select class="form-control mb-4 col-md-4" name="variations">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...