Curso web2py

Validators

Como você viu no appadmin, tabelas do banco de dados podem ser exibidas na forma de formulários permitindo que o usuário possa inserir e editar registros. Porém, para guiar o usuário sobre o que cada campo do banco de dados pode ou não receber e gravar, precisamos avisar quando houver algum campo com dados errados. Por isso, utilizamos validators para definir as especificações de cada campo.

Para a nossa tabela gatos, por exemplo, funciona assim:

racas = ['Siamês', 'Gato de Bengala', 'Persa', 'Sphynx']

db.gatos.nome.requires = IS_NOT_EMPTY()
db.gatos.raca.requires = IS_IN_SET(racas)

Cada campo da tabela é associado aos seus respectivos validadores a partir do atributo requires. Ele indica que aquele campo requer uma determinada ação. No caso, nome possui o validador IS_NOT_EMPTY(), indicando que aquele campo não pode estar vazio; raca possui o validador IS_IN_SET(racas), indicando que o valor desse campo tem que pertencer à lista racas.

Há uma lista completa de validadores na documentação do web2py.

Outros atributos de campos de tabelas também podem ser acessados da mesma forma que requires, por exemplo:

db.gatos.raca.writable = db.gatos.raca.readable = False
db.gatos.raca.default = 'Siamês'

O que acabei de fazer foi indicar que o campo raca não poderá ser editado (writable) nem sequer visto (readable) por quem preenche o formulário e que seu valor padrão será 'Siamês'.