我正在使用flask和sqlite / peewee构建一个api,我想为模型添加约束。
我有一个模特水果:
class Fruit(Model):
name = CharField(unique=True)
color = CharField()
created_at =DateTimeField(default=datetime.datetime.now)
我想添加最小和最大长度,有效字符等约束。 看看peewee文档,我发现CharField接受的是max_length参数,但如果我想添加其他更具体的约束呢?
谢谢!
答案 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.']}