在django中,我从视图中调用了一个表单,该表单传递了一个以init形式弹出的额外对象。我想在init之外的clean def中使用这个对象数据(person)。如何修复此传递信息的范围?谢谢!
class RegForm(forms.Form):
first = forms.CharField(min_length=5)
def __init__(self, *args, **kwargs):
person = kwargs.pop("person")
super(CompleteRegistrationForm, self).__init__(*args, **kwargs)
def clean_first(self):
if not self.cleaned_data['first'] == person.first:
raise forms.ValidationError(_("This information does not match records."))
else:
return self.cleaned_data['first']
答案 0 :(得分:1)
person
应该是一个实例变量:
def __init__(self, *args, **kwargs):
self.person = kwargs.pop("person")
super(CompleteRegistrationForm, self).__init__(*args, **kwargs)
然后,在其他方法中,请将其称为self.person
(不只是person
)。
答案 1 :(得分:0)
您应该将其分配给self
:
self.person = kwargs.pop("person")
这是相当基础的Python - 您可能会从教程中受益。