Django用户的条件属性基于组

时间:2016-10-03 12:25:16

标签: django django-models django-forms

给定的user可以是以下类别中的零个或多个:

  • floor staff
  • managers
  • owners

如果用户为floor staff,则需要额外的属性(例如senioritystaffType)。

我最初的尝试看起来像这样:

  • 为每个类别创建一个Group(这似乎有意义,因为每种类型的用户都应该在网站中拥有不同的权限)
  • 使用所需的额外属性创建FloorStaff模型,并与User建立一对一的关系
  • 单独处理User创建和FloorStaff创建(即使用单独的表单,单独访问)。要创建FloorStaff的表单会自动将User添加到floor staff组。

虽然这有效,但这不是向网站添加新员工员工的最直观方式。从经理的角度来看,填写2个表单来添加一个员工毫无意义。也就是说,如果我雇用一个新人,我应该能够填写一份“新员工”表格,其中包括在添加他们的基本信息的同时将所述员工添加到正确的类别(y / ies),如果是employee应为floor staff,然后还应添加额外属性。

我一直在努力创建一个包含额外属性的自定义用户模型,但考虑到并非所有User都是FloorStaff,这种感觉都是错误的。

此时我所能想到的就是构建一个自定义视图和HTML表单,但这似乎也违背了Django的思维方式。

最“Djangoific”的方法是什么?

1 个答案:

答案 0 :(得分:0)

我建议将seniority和staffType作为可选字段,然后创建一个自定义模型管理员,在楼层工作人员为真时强制提供这些字段