添加验证到烧瓶中的peewee模型

时间:2017-03-12 00:17:51

标签: python flask peewee flask-restful

我正在使用flask和sqlite / peewee构建一个api,我想为模型添加约束。

我有一个模特水果:

class Fruit(Model):
  name = CharField(unique=True)
  color = CharField()
  created_at =DateTimeField(default=datetime.datetime.now)

我想添加最小和最大长度,有效字符等约束。 看看peewee文档,我发现CharField接受的是max_length参数,但如果我想添加其他更具体的约束呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

通过Peewee的代码,peewee不支持验证。 max_length CharField接受,是一个应用于SQL的修饰符。它还应用于以下值:

self.value = self.value[:self.max_length]

但这不是验证。

因此,您可以在peewee模型之上编写自己的验证层。或者使用验证码库,例如:schematics

>>> # Copied from schematics document
>>> from schematics.models import Model
>>> from schematics.types import StringType, URLType
>>> class Person(Model):
...     name = StringType(required=True)
...     website = URLType()

>>> person = Person()
>>> person.website = 'http://www.amontobin.com/'
>>> person.validate()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "schematics/models.py", line 231, in validate
    raise DataError(e.messages)
schematics.exceptions.DataError: {'name': ['This field is required.']}