2017-10-11 56 views
1

如果用户向formset添加了另一个表单,但已经以第一种形式键入了某些内容,则在创建新表单时输入将丢失。用户现在有2个空表单。有没有办法向formset添加新的表单,但不会失去用户输入?如何向django formset添加新表单并且不会丢失以前表单中的用户输入

forms.py

class Form(forms.Form): 
    client = forms.CharField(label='Client', required=False) 
    end_client = forms.CharField(label='End client', required=False) 
    product = AutoCompleteSelectField(lookup_class=ProductLookup, label='Model', required=False) 

views.py

def get(self, request): 
    request.session['form_count'] = 1 

    FormSet = formset_factory(Form) 
    formset = FormSet() 

    return render(request, self.template_name, {'formset': formset}) 

def post(self, request): 
    if "add-form" in request.POST: 
     form_count = request.session['form_count'] 
     print("There are " + str(form_count) + " forms") 

     form_count = form_count + 1 
     request.session['form_count'] = form_count 
     print("Form count increased by 1, form count is: " + str(form_count)) 

     FormSet = formset_factory(Form, extra=int(form_count)) 
     formset = FormSet() **<-- if I put request.POST in here, new form will not be created** 

     return render(request, self.template_name, {'formset': formset}) 

HTML文件

<div class="content"> 
 
    <form method="post"> 
 
    {% csrf_token %} {{ formset.management_form }} 
 
    <div class="form-group"> 
 
     {% for form in formset.forms %} 
 
     <table class='no_error'> 
 
     {{ form.as_table }} 
 
     </table> 
 
     <br> 
 
     <br> {% endfor %} 
 
    </div> 
 
    <input class="btn btn-primary" type="submit" value="Submit order" /> 
 
    <input name="add-form" class="btn btn-primary" type="submit" value="Add new product" /> 
 
    </form> 
 
</div>

回答

相关问题