Google App Engine: Restrições de integridade do modelo?
-
19-09-2019 - |
Pergunta
Eu tenho um modelo de armazenamento de dados que representa itens em um site de comércio eletrônico:
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty()
quantity = db.IntegerProperty()
Existe alguma maneira de aplicar restrições de integridade? Por exemplo, eu gostaria de ter certeza de que quantity
nunca está definido para ser menor que 0.
Solução
o Construtor de propriedades Permite especificar uma função com o argumento nomeado 'validador'. Essa função deve assumir um argumento, o valor e aumentar uma exceção se o válido for inválido. Por exemplo:
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))
Observe que o exemplo usa uma função aninhada para definir validadores de uso geral - você pode, é claro, usar funções simples se desejar escrever um validador de propósito mais especial.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow