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ê.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top