Google App Engine: Modellintegritätsbeschränkungen?
-
19-09-2019 - |
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.
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