0

我必须在 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 类中获取它们?

4

1 回答 1

0

我不禁注意到 form_valid() 没有返回语句 这是来自官方 django 文档,检查覆盖 f​​orm_valid 方法的示例 https://docs.djangoproject.com/en/dev/topics/class-based -views/通用编辑/

于 2013-10-23T15:37:44.413 回答