web2py - 要求从数据库验证已选下拉值

2 投票
1 回答
1622 浏览
提问于 2025-04-15 15:09

我有一个叫做成员的表,里面有一个字段是 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”,等等。

撰写回答