プロパティコンストラクターを使用すると、「バリデーター」という名前の引数を使用して関数を指定できます。この関数は、値という1つの引数を取り、有効が無効な場合は例外を発生させる必要があります。例えば:
def range_validator(minval, maxval):
def validator(v):
if (minval is not None and v < minval) or (maxval is not None and v > maxval):
raise ValueError("Value %s outside range (%s, %s)" % (v, minval, maxval))
return validator
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty(validator=range_validator(0, None))
この例では、ネストされた関数を使用して汎用バリデーターを定義していることに注意してください。もちろん、より特殊な目的のバリデーターを作成する場合は、単純な関数を使用できます。