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() に return ステートメントがないことに気付かずにはいられません。これは公式の django doc からのものです。form_valid メソッドをオーバーライドする例を確認して ください https://docs.djangoproject.com/en/dev/topics/class-based -views/generic-editing/

于 2013-10-23T15:37:44.413 に答える