web2py记录中的引用字段在插入之前包含0,尽管它的表示不等于0 .
要更详细地解释,您可以在下面看到web2py模型中的函数和表定义 . 表中包含对工作人员的一个项目元素赋值的工作人员预订,“SB_AS_ref”是指“db.IT_C_AssignedStaff”相应的记录,这反过来又指向一个员工的记录,工作人员记录包含需要每小时收费值计算(参见字段SB_Value中的“compute”),如calcSB_value(refTo_SB_AS_ref,hours)中所定义 .
这期间记录的 editing 的作品,但是当我 add 记录(在数据管理或网格,不有所作为),行['SB_AS_ref']包含零,尽管我已经选择了一个被称为记录的事实前端有“db.IT_C_AssignedStaff”(不是那么"hours",它们正确包含我输入的值) .
在插入新记录之前我可以采取哪些措施来获得正确的参考值(或者我是否检测到了错误)?提前致谢!
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 '
)