Я получаю сообщение об ошибке «Не удалось выполнить ограничение внешнего ключа».У меня есть записи в ссылочных таблицах, хотя.Это происходит только для вошедшего в систему пользователя. Он отлично работает для пользователей с идентификатором <= 3, но не для других. </p>
Вот соответствующий код db.py:
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))
Вотсоответствующий код default.py:
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)
Пожалуйста, помогите мне в этом вопросе.Я застрял в нем довольно давно.Любая помощь приветствуется.