我编写了一个函数,它接受一个字符串作为输入并对其执行一些验证任务,并且还会更改该值。
def validate(str):
# do validation. If any error, raise Validation error
# modify value of str
return str
我想将此函数用作某些django模型字段的验证器。我知道该怎么做。我的问题是,除了验证之外,我还希望将修改后的值(即函数的返回值)保存在字段中。
答案 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)