У меня есть три пользовательских типа, которые я собираюсь хранить в трех разных таблицах базы данных. Структура выглядит следующим образом:
- A
master
таблица, содержащая столбцы id
, teacher_userid
, student_userid
, parent_userid
, role
и несколько других столбцов. - A
teacher
таблица, содержащая сведения о пользователе учителя (включая учетные данные для входа в систему) - A
student
таблица, содержащая сведения о пользователе учащегося (включая учетные данные для входа в систему) - A
parent
таблица, содержащая сведения о родительском пользователе (включая учетные данные для входа в систему)
Причиной наличия трех отдельных таблиц является то, что данные, хранимые для каждой из них, будут совершенно разными, и кажется, что делать это таким образом чище .
Я хочу, чтобы пользователи любого типа могли входить через ту же форму в моем приложении Flask. flask-login
должен найти таблицу master
, которая затем должна извлечь данные из соответствующей таблицы teacher
, student
или parent
для заполнения модели User.
Однако я в замешательстве о том, как условно заполнить модель User данными из других таблиц.
В идеале можно добавить что-то подобное в User(db.model)
:
if 'Teacher' in role:
name = teacher.name
email = teacher.email
elif 'Student in role:
name = student.name
email = student.email
И скоро. Однако представляется невозможным использовать такие условные операторы в определении класса User. Являются ли геттеры и сеттеры решением? Все это выглядит довольно грязно.