在django字段中验证并保存

时间:2017-10-29 09:07:51

标签: python django validation

我编写了一个函数,它接受一个字符串作为输入并对其执行一些验证任务,并且还会更改该值。

def validate(str):
    # do validation. If any error, raise Validation error
    # modify value of str
    return str

我想将此函数用作某些django模型字段的验证器。我知道该怎么做。我的问题是,除了验证之外,我还希望将修改后的值(即函数的返回值)保存在字段中。

1 个答案:

答案 0 :(得分:1)

models.py 模块不适合执行此操作,因为输入验证通常在表单中完成。但您仍然可以在 Model.save()方法中执行此操作:

# models.py

def validate(str):
    # do validation. If any error, raise Validation error
    # modify value of str
    return str


class YourModel(models.Model):
    ...
    field_to_validate = models.CharField(max_length=100)
    ...

    def save(self, **kwargs):
        try:
            self.field_to_validate = validate(self.field_to_validate)
        except YourValidationError:
            self.field_to_validate = ''
        super(YourModel, self).save(**kwargs)