Django TypedChoiceField选项可从模型中插入值

时间:2019-05-04 13:01:15

标签: django django-models django-forms django-templates

我有一个产品模型,其中stock = models.PositiveIntegerField ()是库存商品数。创建产品时,我会创建随机数量的商品。该产品已添加到购物篮,在这里我可以更改商品数量。我想显示创建时输入的数字。

forms.py

class CartProductForm(forms.Form):
    quantity = forms.TypedChoiceField(choices=[**here need product.stock form this product**], coerce=int)
    update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)

如何将参数传递给此表单,以便product.stock显示在choices参数中?

show_cart.html 此文件向我们展示了我们的购物篮。

{% for item in cart %}
    {% with product=item.product %}
        <tr>
            <td>{{ product.name }}</td>

            <td>
                <form action="{% url 'cart:cart_update' product.id %}" method="POST">
                    {% csrf_token %}
                    {{ item.update_quantity_form.quantity }}
                    <button>Обновить</button>
                </form>
            </td>

            <td><a href="{% url 'cart:cart_delete' product.id %}">Удалить</a></td>
            <td>{{ item.price }} руб.</td>
        </tr>
    {% endwith %}
{% endfor %}

您似乎可以看到选择的表单为空。enter image description here

这是向我们提供此页面的方法

def cart_show(request):
    cart = Cart(request)

    for item in cart:
        item['update_quantity_form'] = CartProductForm(initial={'quantity': item['quantity'], 'update': True})

    return render(request, 'cart/cart_show.html', {'cart': cart})

如何在我介绍的TypedChoiceField字段中输入库存商品数量的值?

1 个答案:

答案 0 :(得分:0)

您可以使用上下文处理器,看看它: https://labofcoding.com/how-write-and-use-custom-template-processors-django/