2010-05-31 63 views
2

嗨,大家好,我知道這個問題已經提出了很多次,但我沒有完全實現。正如你在下面看到的,我有一個表格,我可以動態地告訴要創建多少行。 如何創建一個「添加行」鏈接來告訴視圖要創建多少行?我真的很想做沒有增強網址...向Django表單添加字段動態地(乾淨地)

# views.py 
def myView(request): 
    if request.method == "POST": 
     form = MyForm(request.POST, num_rows=1) 

     if form.is_valid(): 
      return render_to_response('myform_result.html', context_instance=RequestContext(request)) 
    else: 
     form = MyForm(num_rows=1) 

    return render_to_response('myform.html', {'form':form}, context_instance=RequestContext(request)) 


# forms.py 
class MyForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     num_rows = kwargs.pop('num_rows',1) 
     super(MyForm, self).__init__(*args, **kwargs) 

     for row in range(0, num_rows): 
      field = forms.CharField(label="Row") 
      self.fields[str(row)] = field 


# myform.html http://example.com/myform 
<form action="." method="POST" accept-charset="utf-8"> 
    <ul> 
     {% for field in form %} 
      <li style="margin-top:.25em"> 
       <span class="normal">{{ field.label }}</span> 
       {{ field }} 
       <span class="formError">{{ field.errors }}</span> 
      </li> 
     {% endfor %} 
    </ul> 
    <input type="submit" value="Save"> 
</form> 
<a href="ADD_ANOTHER_ROW?">+ Add Row</a> 

回答

11

當你有一個表格行的變量數量,你需要的是一個formset

+0

太棒了,我知道這是我以前可能沒有想到的。感謝您轉向正確的方向!除了表單工作比我所做的更好之外,'ManagementForm'是我正在尋找的部分。 – Scott 2010-05-31 16:43:55