如果验证失败,Django表单将显示已清理的数据

时间:2016-07-27 11:09:30

标签: python django django-forms

我有以django形式声明的以下函数:

def clean_name(self):
    name = self.cleaned_data.get('name')
    name = re.sub('\s+', ' ', name).strip().title()
    return name

我对名称字段有一个唯一约束,如果验证命中,我希望在表单中修剪名称。

在Django中这样做的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

所以我读了一些文章,最后我来到这个解决方案,覆盖了full_clean方法:

def full_clean(self):
    cleaned_data = {}
    for i,v in self.data.items():
        if isinstance(v, basestring):
            cleaned_data[i] = re.sub('\s+', ' ', v).strip()
        else:
            cleaned_data[i] = v
    self.data = cleaned_data

    super(MyForm, self).full_clean()

它有效,但对我来说它看起来有点脏,还有其他建议吗?