web2py - 要求从数据库验证已选下拉值
我有一个叫做成员的表,里面有一个字段是 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 年的数据库 ID 是 1,那么数据库中年份的值就是 1,而不是 2009。
我不明白为什么会这样。
1 个回答
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”,等等。