在form.ModelForm中使用request.POST中的数据,关键词:args
class ThisForm(forms.ModelForm):
class Meta:
model = ThisModel
fields = '__all__'
def __init__(self, *args, **kwargs):
self.iscommit = False
if len(args) > 0:
if args[0].get('_commit') is not None:
self.iscommit = True
super(MatchInitForm, self).__init__(*args, **kwargs)
def clean(self):
if self.iscommit:
# 数据校验
raise forms.ValidationError(
"数据校验。"
)
因,forms.ModelForm的声明如下:
class ModelForm(six.with_metaclass(ModelFormMetaclass, BaseModelForm)):
pass
又,BaseModelForm的 init方法:
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
initial=None, error_class=ErrorList, label_suffix=None,
empty_permitted=False, instance=None):
# 其他省略
pass
在ThisForm在View中的初始化:
form = ThisForm(request.POST)
# 即data = request.POST