1

在 django 中,我从视图中调用了一个表单,它传递了一个在表单 init 中弹出的额外对象。我想在 init 之外的 clean def 中使用这个对象数据(人)。如何修复此传递信息的范围?谢谢!

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']
4

2 回答 2

1

person应该是一个实例变量:

def __init__(self, *args, **kwargs):
    self.person = kwargs.pop("person")
    super(CompleteRegistrationForm, self).__init__(*args, **kwargs)

然后,在其他方法中,将其称为self.person(不仅仅是person)。

于 2012-08-01T18:52:46.273 回答
0

您应该将其分配给self

self.person = kwargs.pop("person")

这是相当基本的 Python - 你可能会从教程中受益。

于 2012-08-01T18:53:04.457 回答