Django Form的某些字段在clean_field()或clean()中始终为None

时间:2019-06-17 08:29:42

标签: python django python-3.x django-forms

在clean()或clean_field()中总是无,但在self.data中。

django 2.x

字段声明为:

    phone = forms.CharField(
        label='',
        min_length=phone_number_min,
        max_length=phone_number_max,
    )

    code_length = settings.SMS_CODE_LENGTH
    code = forms.CharField(
        label='',
        min_length=code_length,
        max_length=code_length,
    )
    def clean_code(self):
        code = self.cleaned_data.get('code')
        phone = self.cleaned_data.get('phone')
        result, message = sms_validator.validate(phone, code)

    def clean(self):
        code = self.cleaned_data.get('code')
        phone = self.cleaned_data.get('phone')
        result, message = sms_validator.validate(phone, code)

以上两者均错误运行:

phone = None

但是如果

phone = self.data.get('phone')

可以获取值。

我想在clean_data中获取电话值

1 个答案:

答案 0 :(得分:1)

首先,您必须始终从字段清理方法返回清理后的值。其次,以字段清除方法访问其他字段值是不安全的。这就是总体clean()方法的目的。