2

我有一个表成员,其中包括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 中的年份值 equal=1 不等于 2009。

我不明白为什么。

4

1 回答 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”等。

于 2009-10-18T13:53:35.560 回答