题
我有一个表成员包括 SQLField("year", db.All_years)
和all_years表如下:
db.define_table("All_years",
SQLField("fromY","integer"),
SQLField("toY","integer")
)
约束是:
db.member.year.requires = IS_IN_DB(db, 'All_years.id','All_years.fromY')
问题是,当我从下拉列表中选择一年的年度列是年ID,而不是年度值:如果2009年具有db id = 1 = 1 db等级的价值相等= 1不等于2009。
我不明白为什么。
解决方案
我看到您的项目进展顺利!
验证器是 IS_IN_DB(dbset, field, label)
. 。因此,您应该尝试:
db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d')
在您的下拉列表中具有正确的标签。
现在,从您的桌子上看,您宁愿选择一个间隔,而不仅仅是开始一年,在这种情况下,您可以使用以下方式:
db.member.year.requires = IS_IN_DB(db, 'All_years.id', '%(fromY)d to %(toY)d')
例如,将显示“ 1980年至1985年”,依此类推。
不隶属于 StackOverflow