[英]Django Formset not working
我正在嘗試使用Django表單中提供的表單集。 這是forms.py
from django import forms
class NewForm(forms.Form):
username = forms.CharField(max_length=100, label="Username")
email = forms.EmailField(label="email")
city = forms.CharField(label="city")
Views.py
from django.shortcuts import render
# Create your views here.
from .forms import NewForm
from django.forms import formset_factory
def formview(request):
if request.method == 'POST':
form = NewForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
city = form.cleaned_data['city']
email = form.cleaned_data['email']
print(type(form.cleaned_data))
NewFormSet = formset_factory(NewForm)
formset = NewFormSet()
for form in formset:
print(form)
for k,v in form.cleaned_data.items():
print(k,v)
else:
print("ddd")
form = NewForm()
formset = 0
return render(request, 'form.html', {'form':form,'formset':formset})
之前它工作正常,但問題是,當我添加此表單集代碼時,它顯示錯誤
模板:
<html>
<head>
<title>The Form</title>
</head>
<body>
<form method='POST'>{% csrf_token %}
{% for field in form %}
{{ field.error }}
<br />
{{ field.label }}
{{ field }}
<br />
{% endfor %}
<input type="Submit" value="Submit">
</form>
{% for f in formset %}
<form method='POST'>{% csrf_token %}
{% for field in f %}
{{ f.error }}<br />
{{ f.label }}
{{ f }}
<br />
{% endfor %}
</form>
{% endfor %}
</body>
</html>
請幫忙。
您需要調用form.is_valid()
來對其進行清理/驗證,然后再沒有cleaned_data
,還應該考慮重命名循環變量,因為您已經有一個名為form
的變量:
for newform in formset:
if newform.is_valid():
for k,v in newform.cleaned_data.items():
print(k,v)
您還可以在表單集上調用is_valid()
來驗證表單集中的所有表單:
if formset.is_valid():
for newform in formset:
for k,v in newform.cleaned_data.items():
print(k,v)
但是請記住,此時的newform
沒有數據,只是一個空的NewForm
。
編輯:
問題是
def formview(request):
newformset = formset_factory(NewForm)
if form.is_valid():
formset = newformset(request.POST)
..
...
...
else:
formset = newformset()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.