Web2py - requer valores suspensos selecionados validam de db
Pergunta
Eu tenho um membro da tabela que inclui SQLField("year", db.All_years)
e tabela all_years como o seguinte:
db.define_table("All_years",
SQLField("fromY","integer"),
SQLField("toY","integer")
)
e as restrições são:
db.member.year.requires = IS_IN_DB(db, 'All_years.id','All_years.fromY')
O problema é que, quando seleciono um ano a partir da suspensão, o valor da coluna do ano é o ID do ano, não o valor do ano, por exemplo: se o ano de 2009 tiver DB ID = 1 o valor do ano em dB igual = 1 não é igual a 2009.
Eu não entendo o porquê.
Solução
Vejo que seu projeto está progredindo bem!
O validador é IS_IN_DB(dbset, field, label)
. Então você deve tentar:
db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d')
ter um rótulo correto na sua lista suspensa.
Agora, da sua tabela, parece que você prefere escolher um intervalo e não apenas no início do ano, nesse caso, você pode usar isso:
db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d to %(toY)d')
Isso exibirá, por exemplo, "1980 a 1985", e assim por diante.