我有一小段代码,让我们说:
class ChoiceForm(forms.Form):
type = forms.ChoiceField(choices=[
(CHOICE_YES, CHOICE_YES),
(CHOICE_NO, CHOICE_NO),
])
def __init__(self, user=None, *args, **kwargs):
super(ChoiceForm, self).__init__(*args, **kwargs)
self.user = user
def clean(self):
form_data = self.cleaned_data
pass
在第一种情况下,不会调用重写方法clean
。
除__init__
方法之外的相同代码:
def __init__(self, user=None, *args, **kwargs):
self.user = user
super(ChoiceForm, self).__init__(*args, **kwargs)
在这种情况下,调用覆盖的清理。有什么区别?
注意:在视图中调用is_valid
方法。
视图的一部分,其中使用了表单:
def get(self, request, *args, **kwargs):
form = ChoiceForm(self.user, self.kwargs)
if not form.is_valid():
return HttpResponse(status=400)
try: