2017-03-12 10 views
0

フラスコとsqlite/peeweeでapiを構築しています。モデルに制約を追加したいと思います。フラスコのpeeweeモデルにバリデーションを追加する

私はモデルのフルーツを持っている:

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

私は有効な文字、最小と最大の長さなどの制約を追加したい、など はピーウィーのドキュメントを見て、私が見つけたすべてはCharFieldですが受け付けるMAX_LENGTHパラメータでした他のより具体的な制約を追加したいのですが?

ありがとうございます!

答えて

0

Peeweeのコードを経て、検証はピーエーエによってサポートされていません。 CharFieldが許容するmax_lengthは、SQLに適用される修飾語です。

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

ただし、これは検証ではありません。

したがって、ピューニーモデルの上に独自のバリデーションレイヤーを書くことができます。または、次のようなバリデーターライブラリを使用してください: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.']} 
関連する問題