Django在for循环中使用隐藏输入生成表单

时间:2013-10-23 14:47:59

标签: django django-forms

我必须在forloop中动态填充隐藏输入的表单。 我是这样做的: 我的表格类是:

class RemoveFromCartForm(forms.Form):
    pass

它没有字段,因为我打算使用它来使用基于类的视图并进行表单处理。关键是我试图动态生成一个隐藏输入很少的表单,如下所示:

{% for cart_item in cart.cartitems.all %}
<p>{{cart_item}}</p>
<form method="POST" action="">{% csrf_token %}
    {{form.as_p}}
    <input type="hidden" name="cartitem" value="{{cart_item.pk}}" />
    <input type="hidden" name="cart" value="{{cart.pk}}" />
    <input type="submit" value="remove">
</form>
{% endfor %} 

我的观点类如下:

class AddToCart(DetailView, BaseFormView ):
    form_class = RemoveFromCartForm
    model = Cart 
    context_object_name = 'cart'
    template_name = 'cart/add-to-cart.html'

    def get_object(self,queryset=None):
        return Cart.objects.get(cart_id=self.request.session['CART_ID'])

    def form_valid(self, form):
        cleaned_data = form.cleaned_data
        #return something

问题是我的form.cleaned_data是{},虽然我正在使用forloop来动态填充一些隐藏的输入。我如何添加这些隐藏的输入,以便我在form_valid类中获取它们?

1 个答案:

答案 0 :(得分:0)

我不禁注意到form_valid()没有return语句 这是来自官方的django doc,请查看覆盖form_valid方法的示例 https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-editing/