Google App Engine: les contraintes d'intégrité du modèle?
-
19-09-2019 - |
Question
J'ai un modèle datastore représentant les éléments d'un site e-commerce:
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty()
Est-il possible de faire respecter les contraintes d'intégrité? Par exemple, je voudrais vous assurer que quantity
est jamais mis à être inférieure à 0.
La solution
Le constructeur propriété vous permet de spécifier un fonctionner avec le « valideur » argument nommé. Cette fonction doit prendre un argument, la valeur, et lever une exception si la validité est invalide. Par exemple:
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))
Notez que l'exemple utilise une fonction imbriquée pour définir validateurs usage général -. Vous pouvez, bien sûr, utiliser des fonctions simples si vous voulez écrire un but plus spécial validateur
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow