Django 模型表单的验证

Django 模型表单的验证,django,python-2.7,modelform,Django,Python 2.7,Modelform,我正在尝试对模型表单进行验证,以检查“电子邮件”和“确认电子邮件”是否具有相同的值。我尝试在网上搜索,但出现了一些错误。我正在models.py文件中制作自定义验证器 你能帮我一下吗。验证模型表单的最佳方法是什么 这是我的密码 MODELS.PY 来自django.db导入模型的 来自django.core导入验证程序 从django.core.exceptions导入ValidationError #在这里创建您的模型。 def验证(自我、电子邮件、确认电子邮件): 如果是电子邮件!=确认电

我正在尝试对模型表单进行验证,以检查“电子邮件”和“确认电子邮件”是否具有相同的值。我尝试在网上搜索,但出现了一些错误。我正在models.py文件中制作自定义验证器

你能帮我一下吗。验证模型表单的最佳方法是什么

这是我的密码

MODELS.PY

来自django.db导入模型的

来自django.core导入验证程序
从django.core.exceptions导入ValidationError
#在这里创建您的模型。
def验证(自我、电子邮件、确认电子邮件):
如果是电子邮件!=确认电子邮件:
引发验证错误(
(“电子邮件不匹配”),
params={'email':email'confirm_email':confirm_email}
)
类新闻订阅器(models.Model):
first_name=models.CharField(最大长度=128)
last_name=models.CharField(最大长度=128)
email=models.EmailField(最大长度=254,唯一性=True)

确认电子邮件=models.EmailField(最大长度=254,验证器=[validate_equal('self','email','confirm_email'))
你不能这样做,尤其是当你想比较字段时。您在这里所做的就是传递文本字符串“email”和“confirm_email”(以及“self”,出于某种原因)-并且您在定义时间调用验证函数

相反,在表单本身上使用干净的方法

class NewSubscriberForm(forms.ModelForm):
    class Meta:
        fields = '__all__'

    def clean(self):
        if self.cleaned_data['email'] != self.cleaned_data['confirm_email']:
            raise forms.ValidationError('email does not match')
        return self.cleaned_data

谢谢你的帮助,丹尼尔!