我有一个包含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,则db等于1的年份值不等于2009年
我不明白为什么。
答案 0 :(得分:2)
我看到你的项目进展顺利!
验证器为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年”,依此类推。