質問

eコマースサイトにアイテムを表すデータストアモデルがあります。

class Item(db.Model):
    CSIN = db.IntegerProperty()
    name = db.StringProperty()
    price = db.IntegerProperty()
    quantity = db.IntegerProperty()

整合性の制約を実施する方法はありますか?たとえば、私はそれを確認したいと思います quantity 0未満に設定されることはありません。

役に立ちましたか?

解決

プロパティコンストラクター 「Validator」という名前の引数を使用して関数を指定できます。この関数は、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))

この例では、ネストされた関数を使用して汎用のバリデーターを定義していることに注意してください。もちろん、より特別な目的検証装置を作成する場合は、単純な関数を使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top