基于组的Django用户的条件属性
给定的基于组的Django用户的条件属性,django,django-models,django-forms,Django,Django Models,Django Forms,给定的用户可以是以下零个或多个类别: 楼层工作人员 managers 所有者 如果用户是楼层员工,他们需要额外的属性(例如资历和员工类型) 我最初的尝试是这样的: 为每个类别创建一个组(这似乎是有意义的,因为每种类型的用户在站点中应该有不同的权限) 使用所需的额外属性和与用户的1对1关系创建FloorStaff模型 分别处理User创建和FloorStaff创建(即使用单独的表单,单独访问)。创建FloorStaff的表单自动将User添加到FloorStaff组 虽然这是可行的,但将新
用户
可以是以下零个或多个类别:
楼层工作人员
managers
所有者
楼层员工
,他们需要额外的属性(例如资历
和员工类型
)
我最初的尝试是这样的:
- 为每个类别创建一个
(这似乎是有意义的,因为每种类型的用户在站点中应该有不同的权限)组
- 使用所需的额外属性和与
用户的1对1关系创建
模型FloorStaff
- 分别处理
创建和User
创建(即使用单独的表单,单独访问)。创建FloorStaff
的表单自动将FloorStaff
添加到User
组FloorStaff
楼层员工
,则还应添加额外的属性
我一直在尝试创建一个包含额外属性的自定义用户模型,但考虑到并非所有user
s都是FloorStaff
,这感觉是错误的
在这一点上,我所能想到的就是构建一个自定义视图和HTML表单,但这似乎也违背了Django的思维方式
最“精确”的方法是什么?我建议将“资历”和“员工类型”作为可选字段,然后创建一个自定义模型管理员,在“楼层员工”为真时强制提供这些字段。我建议将“资历”和“员工类型”作为可选字段,然后创建一个自定义模型管理员,在floor staff为真时强制提供这些字段我可以问一下您的理由吗?这是我看到的最简单、最“按部就班”的方法。您可以使用现有的类,并显式地描述模型的“法则”。我看到的唯一缺点是,最终结果不会由数据库强制执行——只有管理员执行,因此,如果您想使用Django Rest Framework之类的东西,它就不会知道您的modeladmin类。如果你没有这样的用例,这是最好的选择。啊,酷,好吧。我确实计划最终增加DRF,但我想当我达到这一点时,我会越过这座桥。我可以问一下你的理由吗?这是我看到的最简单和最“按常规”的方法。您可以使用现有的类,并显式地描述模型的“法则”。我看到的唯一缺点是,最终结果不会由数据库强制执行——只有管理员执行,因此,如果您想使用Django Rest Framework之类的东西,它就不会知道您的modeladmin类。如果你没有这样的用例,这是最好的选择。啊,酷,好吧。我确实计划最终增加DRF,但我想当我到达它时,我会跨过那座桥。