Frage

Ich habe ein Datenspeichermodell, das Elemente auf einer E -Commerce -Site darstellt:

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

Gibt es eine Möglichkeit, Integritätsbeschränkungen durchzusetzen? Zum Beispiel möchte ich das sicherstellen quantity wird niemals weniger als 0 sein.

War es hilfreich?

Lösung

Das Immobilienkonstruktor Sie können eine Funktion mit dem benannten Argument "Validator" angeben. Diese Funktion sollte ein Argument, den Wert und eine Ausnahme annehmen, wenn die Gültigkeit ungültig ist. Zum Beispiel:

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))

Beachten Sie, dass das Beispiel eine verschachtelte Funktion verwendet, um allgemeine Validatoren zu definieren. Sie können natürlich einfache Funktionen verwenden, wenn Sie einen speziellen Zweckvalidator schreiben möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top