当为id>3的用户使用SQLFORM时,尽管在web2py的引用表中有引用记录,但仍存在外键约束
我获取外键约束失败错误。不过,我在参考表中有记录。这种情况只发生在登录用户身上。对于id为 在上面,您将patient的值设置为auth.user.id,这是auth_user表中的一个id。但是,分配的“患者”字段必须是“患者”表中的id,因为它属于“参考患者”类型。相反,您可能需要表单刚刚插入到患者中的记录的id,即form.vars.id:当为id>3的用户使用SQLFORM时,尽管在web2py的引用表中有引用记录,但仍存在外键约束,web2py,Web2py,我获取外键约束失败错误。不过,我在参考表中有记录。这种情况只发生在登录用户身上。对于id为 在上面,您将patient的值设置为auth.user.id,这是auth_user表中的一个id。但是,分配的“患者”字段必须是“患者”表中的id,因为它属于“参考患者”类型。相反,您可能需要表单刚刚插入到患者中的记录的id,即form.vars.id: 还考虑Auth.U.R.ID始终是当前登录用户的ID。不清楚您对auth.user.id的其他使用是否合适,即使用db.Roles.insert和au
还考虑Auth.U.R.ID始终是当前登录用户的ID。不清楚您对auth.user.id的其他使用是否合适,即使用db.Roles.insert和auth.add_成员身份,因为在表单中选择为医生或患者的用户不一定是登录用户
db.define_table('Roles',
Field('person', db.auth_user),
Field('role'))
db.define_table('Doctors',
Field('doctor', db.auth_user, required = True),
Field('age', 'integer', required = True),
Field('qualification'),
Field('specialization'),
format = '%(doctor)s'
)
db.define_table('Patients',
Field('patient', db.auth_user, required = True),
Field('age', 'integer', required = True),
Field('doctor', db.Doctors, required = True),
Field('temperature', 'double'),
Field('blood_pressure', 'double'),
Field('haemoglobin', 'double'),
Field('contact_name'),
Field('contact_phone', 'bigint'),
format = '%(patient)s'
)
db.define_table('Assignments',
Field('doctor', 'reference Doctors', unique = False),
Field('patient', 'reference Patients', unique = False))
def registerRole():
role = int(request.args[0])
form = FORM()
if role == 1:
form = SQLFORM(db.Doctors).process()
elif role == 2:
form = SQLFORM(db.Patients).process()
if form.accepted:
response.flash = 'form accepted'
if role == 1:
db.Roles.insert(person = auth.user.id, role = 'doctor')
auth.add_membership(auth.id_group('doctor'),auth.user.id)
elif role == 2:
i = 1
db.Assignments.insert(doctor = int(form.vars.doctor), patient = auth.user.id)
db.Roles.insert(person = auth.user.id, role = 'patient')
auth.add_membership(auth.id_group('patient'),auth.user.id)
redirect(URL('index'))
else:
response.flash = form.errors
return dict(form = form, role = role)
db.Assignments.insert(doctor = int(form.vars.doctor), patient = auth.user.id)
db.Assignments.insert(doctor = int(form.vars.doctor), patient = form.vars.id)