Flask-用户到配置文件的关系

时间:2019-08-02 05:53:16

标签: python flask model

我正在使用Flask-restplus,现在我想将用户模型中的每个用户关联到一种配置文件类型,其中每个用户可以与一个或多种配置文件类型相关联。我想知道你们会怎么做。到目前为止,这是我正在考虑/计划做的事情。注意:我对Web开发的经验不是很丰富,所以有可能我不知道实现此目标的最佳方法。

第1步:创建一个与一个静态表相关的一对多(客户也必须是雇员,请参见下文)字段(profile_types),该表仅列出所有可能的配置文件选项。示例:

inds <- match(names(replace)[-1], input$Name)
replace$X <- format(replace$X, "%d-%b-%y")
input[inds, c("c.Date", "c.Result")] <- replace


input
#      a.Date   Name a.Result Rank b.Result    b.Date c.Result    c.Date
#1  19-Sep-18  Frank      381    1      891 19-Sep-18      931 19-Sep-18
#2  19-Sep-18   Gene       84    2      525 19-Sep-18      462 19-Sep-18
#3  18-Mar-19  Simon      851    4      795 18-Mar-19      323 18-Mar-19
#4  18-Mar-19    Bob      550    3      697 18-Mar-19      936 18-Mar-19
#5   7-Dec-18   Bill       87    5      351  7-Dec-18    -2082 12-Sep-18
#6   2-Aug-18   Tony      922    8      724  2-Aug-18       26  2-Aug-18
#7  15-Aug-18  Scott       59    6      341 15-Aug-18       93 15-Aug-18
#8   8-Mar-19 Angela      912    7      615  8-Mar-19      820  8-Mar-19
#9  21-Dec-18 Millie      603    9      395 21-Dec-18      468 21-Dec-18
#10 29-Jul-19   Fred      113   10      229 29-Jul-19      265 29-Jul-19

此处的想法是跟踪与特定配置文件类型相关的用户的不同信息并允许使用不同的视图/端点。例如,员工将提供有效的登录身份验证并定向到页面A,而客户将定向到页面B,依此类推。我们还计划在每个配置文件模型中收集不同的数据点。

因此,一个用户实例看起来像这样,PK PROFILE TYPE 1 provider 2 employee 3 client .....

注意:这对数据收集(即员工年龄,开始日期等)比根据权限创建指令更为重要。

步骤2:创建新用户后,将根据提供给用户实例的profile_types触发创建概要文件的信号。我过去在django中使用过信号,Flask是否有信号库?

第3步:该用户现在存在一个空的配置文件实例。批量上传数据或手动填写个人资料信息将由超级用户决定。

这是解决这个问题的明智方法吗?我的另一项工作是在用户模型user1.profile == [client, employee'].中创建一堆布尔字段。将为所有True字段分配一个配置文件实例。最好的方法是什么?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

看到正在尝试验证多种配置文件类型,可以使用

if user.profile_type in ['employee', 'client']

现在,如果您想添加超级用户,我想您可以使用此

if user.profile_type in ['employee', 'client'] and user.profile_type == 'superuser'

现在,您的关系更像是“多对多”,因为您是说客户也必须是员工,如果您表示员工和客户需要访问某些端点,那么您需要使用“多对一”关系(an Stackoverflow question which explains what is that

对于您的实例,有Flask Marshmallow,如果您使用的是数据库,它与Flask SQLAlchemy具有惊人的兼容性,但是Flask Marshmallow可以单独工作。