我有一个表成员包括 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年”,依此类推。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top