Domanda

Ho un membro del tavolo che include SQLField("year", db.All_years)

e la tabella all_years come segue:

db.define_table("All_years",
  SQLField("fromY","integer"),
  SQLField("toY","integer")
  )

E i vincoli sono:

db.member.year.requires = IS_IN_DB(db, 'All_years.id','All_years.fromY')

Il problema è quando seleziono un anno dal discesa Il valore della colonna dell'anno è l'ID dell'anno, non il valore dell'anno ad es. Se l'anno 2009 ha db ID = 1 Il valore dell'anno in db uguale = 1 non uguale 2009.

Non capisco perché.

È stato utile?

Soluzione

Vedo che il tuo progetto sta progredendo bene!

Il validatore è IS_IN_DB(dbset, field, label). Quindi dovresti provare:

db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d')

Per avere un'etichetta corretta nell'elenco a discesa.

Ora dal tuo tavolo sembra che preferiresti scegliere un intervallo piuttosto che solo l'anno iniziale, in quel caso puoi usarlo:

db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d to %(toY)d')

Ciò mostrerà, ad esempio, "dal 1980 al 1985" e così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top