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 に答える