Flask模型中的条件语句

问题描述 投票:0回答:1

我有三种用户类型,打算将它们存储在三个不同的数据库表中。结构如下:

  • 包含列masteridteacher_useridstudent_useridparent_userid和其他一些列的role表。
  • 一个teacher表,其中包含有关教师用户的详细信息(包括登录凭据)
  • 一个student表,其中包含有关学生用户的详细信息(包括登录凭据)
  • 一个parent表,其中包含有关父用户的详细信息(包括登录凭据)

具有三个单独的表的原因是,每个表存储的数据将有很大的不同,用这种方法看起来更干净。

我希望任何类型的用户都可以通过我的Flask应用中的相同表单登录。 flask-login应该查找master表,然后应该从相关的teacherstudentparent表中提取数据以填充用户模型。

但是,我很困惑如何用其他表中的数据有条件地填充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类定义中的条件语句。吸气器和装夹器是解决方案吗?一切都感觉很混乱。

mysql flask flask-sqlalchemy flask-login
1个回答
0
投票

[我建议您将通用数据字段(例如凭据)存储在'主'用户表中,而仅将角色特定的字段存储在教师,家长和学生表中。

[老师,父母,学生表应具有对用户表的引用。

您可以将属性添加到您的flask-sqlalchemy用户类中,该类称为教师,学生和父母,该类返回相关的教师,学生,父母对象(教师也可能是父母)。

此模型允许您与用户相关的代码(例如登录名)针对User对象运行,并且您特定于角色的代码针对特定角色对象运行。

© www.soinside.com 2019 - 2024. All rights reserved.