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.

¿Fue útil?

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
scroll top