Google App Engine: ¿Restricciones de integridad del modelo?
-
19-09-2019 - |
Pregunta
Tengo un modelo de almacén de datos que representa elementos en un sitio de comercio electrónico:
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty()
¿Hay alguna forma de hacer cumplir las limitaciones de integridad? Por ejemplo, me gustaría asegurarme de que quantity
nunca se establece para ser menos de 0.
Solución
los Constructor de propiedades le permite especificar una función con el argumento nombrado 'Validador'. Esta función debe tomar un argumento, el valor y plantear una excepción si lo válido no es válido. Por ejemplo:
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))
Tenga en cuenta que el ejemplo usa una función anidada para definir validadores de propósito general; por supuesto, puede usar funciones simples si desea escribir un validador de propósito más especial.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow