web2py记录中的引用字段在插入之前包含0,尽管它的表示不等于0.
为了更详细地解释,您可以在下面看到web2py模型中的函数和表定义。 该表包含工作人员对项目元素工作人员分配的预订,“SB_AS_ref”是指“db.IT_C_AssignedStaff”中的相应记录,后者又指向员工记录,员工记录包含所需的小时费率。值计算(参见"计算"在字段SB_Value中),如calcSB_value(refTo_SB_AS_ref,hours)中所定义。
这适用于记录的编辑,但当我添加记录时(在数据管理或网格中,没有区别),行[& #39; SB_AS_ref']包含零,尽管事实上我已经在前端选择了一个引用记录“db.IT_C_AssignedStaff”(不是这样"小时",它们正确包含值我已经进入了。)
在插入新记录之前,我可以采取哪些措施来获取正确的参考值(或者我是否检测到了错误)? 提前谢谢!
def calcSB_Value(refTo_SB_AS_ref,hours):
rows = \
db(db.IT_C_AssignedStaff.id==int(refTo_SB_AS_ref)
).select()
staffID = rows[0].AS_ST_ref
rows = db(db.IT_C_Staff.id==staffID).select()
hourlyRate = rows[0].ST_HourlyRate
return hours * hourlyRate
#----------------------------------------------
# MODEL
db.define_table('IT_C_StaffBooking',
Field('SB_AS_ref', db.IT_C_AssignedStaff,
required=True,
notnull=True,
label='Reference to staff assignment',
authorize=False,
uploadfield=False,
uploadseparate=False,
ondelete='CASCADE',
),
Field('SB_Date', type='date',
required=True,
notnull=True,
comment='Latest booking date',
label='Date of activity',
authorize=False,
uploadfield=False,
uploadseparate=False,
ondelete='CASCADE',
),
Field('SB_hours', type='integer',
required=True,
notnull=True,
comment='Latest booking date',
label='duration of activity',
authorize=False,
uploadfield=False,
uploadseparate=False,
default='0',
ondelete='CASCADE',
),
Field('SB_Value', type='decimal(10,2)',
compute=
lambda row: calcSB_Value(row['SB_AS_ref'],row['SB_hours']),
notnull=True,
comment='Will be calculated',
label='Value = duration * hourly rate',
authorize=False,
uploadfield=False,
uploadseparate=False,
default='0',
ondelete='CASCADE',
),
format='%(SB_AS_ref)s, %(SB_Date)s '
)