2016-10-11 4 views
0

私は過去数日間この問題に頭を悩ましています。同じエラーに関する他の多くの質問を読んだことがありますが、 TOTAL_FORMSの更新を忘れるなど)、私の問題は解決しません。私は単一のHTML形式で複数の書式セットを含むことができるページを持っています。私は、サーバーにデータをポストしているとき、is_valid()が失敗したため、タイトルセットにエラーがあります。私は愚かな間違いをした場合、または動作しない方法を取っている場合、私はWeb開発とDjangoに新しいので、私を許してください。ここで Django - ManagementFormのデータが欠落している、または改ざんされている

def purchase(request): 
    return generic_form_view(request, "inventory_tracking/add_purchases.html", 
            "Successfully added purchases for %s.", 
            PurchaseForm, 
            [formset_factory(PurchaseForm.LiquorForm), 
            formset_factory(PurchaseForm.NonLiquorForm)]) 

def generic_form_view(request, template, success_message, ParentForm, FormSets): 
    if request.method == 'POST': 
    request_params = copy(request.POST) 
    parent_form = ParentForm(request_params) 
    formsets = list(map(lambda form_set: form_set(request_params), FormSets)) 
    if parent_form.is_valid(): # This works. 
     for formset in formsets: 
      if formset.is_valid(): # Fails here. 

は私のテンプレートからの抜粋です:私はこれをデバッグしようとしてきたと私は少し面白いことに気づいたが、私はジャンゴとあまりにも慣れていないよので、それは可能性があり

<form action="{% block form_action %}{% endblock %}" method="post"> 
    {% csrf_token %} 
    <div class="row"> 
     <div class="row"> 
      <div class=" well well-lg"> 
       <div class="row"> 
       {{ parent_form.management_form }} 
       {% for field in parent_form %} 
        <div class="col-lg-6"> 
         <div class="form-group"> 
          <label class="control-label">{{ field.label }}</label> 
          {{ field }} 
         </div> 
        </div> 
       {% endfor %} 
       </div> 
      </div> 
     </div> 
    </div> 

    <div class="row"> 
     {% for formset in formsets %} 
      {{ formset.management_form }} 
      <div class="row"> 
       <div class="well well-lg"> 
        {% for form in formset %} 
         <div id="{{ form.prefix }}" class="row"> 
         ... 

赤いニシン。 POSTでは、作成している書式セットのmanagement_formデータが表示されますが、親フォームセット(この場合はPurchaseForm)のmanagement_formデータは表示されません。しかし、parent_formは検証をパスしており、他のformsetはそうではありません。

答えて

0

私はこれが愚かな問題であると予想していました。私のgeneric_form_viewメソッドがGETリクエストでformsetsを作成するとき、私は前述のドキュメントのようにプレフィックスを追加していましたが、POSTでフォームセットを作成するときにプレフィックスを追加していませんでした。

関連する問題