【问题标题】:Django Form Validation ConflictDjango 表单验证冲突
【发布时间】:2017-07-14 05:54:16
【问题描述】:

发生了一些奇怪的事情。假设我有一个字段定义为:

Project_name = models.CharField(max_length=250, unique=True)

所以Project_name 必须有一个唯一的值,否则它会抛出一个错误。然后我想添加其他验证检查。所以在我的forms.py

def clean(self):
    data = self.cleaned_data
    if data['team_member2'] == data['team_member3']:
        raise ValidationError("Can't have duplicate team members")

但是,一旦我添加了这个函数,unique 操作符就会因为某种原因停止工作。有什么想法吗?

【问题讨论】:

    标签: django forms validation model


    【解决方案1】:

    您在覆盖时没有调用超类的clean 方法。

    试试这个:

    def clean(self):
        data =  super(FormClass, self).clean()
        if data['team_member2'] == data['team_member3']:
            raise ValidationError("Can't have duplicate team members")
        return data
    

    来自documentation

    示例代码中对 super(ContactForm, self).clean() 的调用可确保维护父类中的任何验证逻辑。

    【讨论】:

    • 神圣!成功了,你能告诉我这背后的逻辑吗?
    • @AndyXu 我添加了一个指向 Django 文档的链接,其中详细介绍了该问题..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多