Google App Engine: vincoli di integrità del modello?
-
19-09-2019 - |
Domanda
Ho un modello datastore che rappresentano elementi in un sito e-commerce:
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty()
C'è qualche modo per far rispettare i vincoli di integrità? Per esempio, vorrei fare in modo che non è mai quantity
impostato per essere inferiore a 0.
Soluzione
Il costruttore Proprietà permette di specificare un funziona con il 'validatore' chiamato argomento. Questa funzione dovrebbe prendere un argomento, il valore, e sollevare un'eccezione se la validità non è valido. Ad esempio:
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))
Si noti che l'esempio utilizza una funzione annidata per definire validatori general-purpose -. Si può, naturalmente, utilizzare le funzioni semplici se si vuole scrivere un più speciale validatore scopo
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow