【发布时间】:2017-02-22 13:29:37
【问题描述】:
请考虑下表:
db.define_table('bio_data',
Field('name', 'string'),
Field('total_mark', 'integer', requires=IS_EMPTY_OR(IS_INT_IN_RANGE(0, 1e100))),
Field('marks_obtained', 'integer')
)
现在“marks_obtained”字段的值不能大于“total_marks”。
我已经尝试了以下
db.bio_data.marks_obtained.requires = IS_EMPTY_OR(
IS_INT_IN_RANGE(0, db.bio_data.total_mark))
但这不起作用。我收到以下错误:
TypeError: int() argument must be a string or a number, not 'Field'
非常感谢任何帮助。
【问题讨论】:
-
想办法得到
Field的整数值。 -
是的,这就是这里的问题,我怎样才能得到一个值而不是一个字段。我尝试了以下方法,但仍然出现错误:
Field('marks_obtained', 'integer', requires=lambda row: IS_EMPTY_OR(IS_INT_IN_RANGE(0, db.bio_data(row.id).total_mark)))并请求您在不了解完整问题或知识的情况下不要投反对票。 -
你能输入
dir(db.bio_data.total_mark)看看它会返回什么吗?你有没有试过int(db.bio_data.total_mark) -
int(db.bio_data.total_mark)这给出了同样的错误,因为这个查询是db.bio_data.total_mark正在返回一个字段,而不是一个整数。
标签: python web2py data-access-layer