【发布时间】:2014-12-09 21:44:03
【问题描述】:
我有这样的自定义表单代码
class ReportForm(forms.Form):
start = forms.DateField(forms.DateInput())
end = forms.DateField(forms.DateInput())
type = forms.CharField(max_length=2, choices=ACTIVITY_CHOICES, default=RUNNING)
def clean(self):
if 'start' in self.cleaned_data > 'end' in self.cleaned_data:
raise forms.ValidationError("Popraw daty")
else:
pass
问题是,当我尝试使用该表单加载页面时,我得到TypeError at /reportform
__init__() got an unexpected keyword argument 'default'
这与 type = forms.CharField 的选项有关 - 但是当我删除这些选项时,我得到了
NoReverseMatch at /reportform
Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
这是我尝试使用此表单的观点:
def ReportRequest(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
if request.method == 'POST':
form = ReportForm(request.POST)
if form.is_valid():
usrname = request.user
q = Training.objects.filter(user__in==usrname)
q = Training.objects.filter(date__in>=form.cleaned_data['start'])
q = Training.objects.filter(date__in<=form.cleaned_data['end'])
q = Training.objects.filter(type__in==form.cleaned_data['type'])
if q.count() == 0:
return HttpResponseRedirect('/notrainings/')
avg_length = q.aggregate(Avg('length'))
avg_distance = q.aggregate(Avg('distance'))
avg_calories = q.aggregate(Avg('caloriesBurnt'))
return HttpResponseRedirect('/report/')
else:
return render_to_response('reportform.html', {'form':form}, context_instance=RequestContext(request))
else:
form = ReportForm()
return render_to_response('reportform.html',{'form':form}, context_instance = RequestContext(request))
我不知道如何处理这个问题,如果有任何帮助,我将不胜感激。
【问题讨论】: