【问题标题】:validate and save in django field验证并保存在 django 字段中
【发布时间】:2017-10-29 09:07:51
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以像这样分配模型值row=Lab(ip=IPpool[i]) row.pingstatus=ispingable(IPpool[i]) 这里实验室是模型。第一行是实例化,第二行是将函数返回值分配给模型列。 ispingable 是这里的功能。这就是你要找的吗?
  • 我想要它在 django 中
  • 在 models.py 文件中?
  • 在 django 字段中是的
  • 在django models.py文件中,我们会声明字段数据类型,长度,是主键还是默认值。所以你想让函数的返回值作为模型字段的默认值?可以举个例子吗?

标签: python django validation


【解决方案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)

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多