Django ModelForm is_valid()错误类型

Eri*_*ver 2 django django-forms

我有一个EmailField(primary_key=True)。我正在使用ModelForm来向用户呈现表单,并在回发给我打电话form.is_valid()

我在此字段上看到两种类型的错误。一个是对主键的唯一值约束(此电子邮件地址已存在)。另一个是无效的电子邮件地址错误。

我想对每个错误做出不同的反应。有没有一种简单的方法可以确定验证失败是由于实际输入格式错误还是唯一约束引起的?

Eri*_*ver 5

我想出了如何实现自己想要的。我的目标是避免唯一的约束,以便在提交重复的电子邮件地址的情况下,我可以默默地忽略表单提交并成功(从用户的角度出发,因为他们的提交是noop)。

首先覆盖validate_uniqueModelForm定义的方法。

from django.forms import ModelForm
from apps.announcer.models import Subscriber

class SubscribeForm(ModelForm):
    class Meta:
        model = Subscriber
        exclude = ('created',)

    def validate_unique(self):
        pass
Run Code Online (Sandbox Code Playgroud)

由于该validate_unique方法已转换为noop,因此视图将必须执行所需的任何验证。因此,而不是调用form.save()call entity = form.save(commit=False)。对实体进行所需的验证,必要时进行呼叫entity.save()