我正在使用Django 1.3和Python2.6开发一个网络应用程序。我必须扩展Django User模型,以便有三种类型的用户和每种类型的管理权限。
为了阐明,说有三种类型的用户:教师,助教和学生。 TA将能够创建一个新的“作业”,教师将能够“审核”并确认它,学生提交'解决方案,教师必须'审核',并且TA最终可以检查那些“已审核”的解决方案。现在有三种类型的用户:TA
谁可以创建Assigments和成绩解决方案,Faculty
谁可以审核分配和解决方案以确认它们,以及Students
谁可以提交解决方案。
现在,我了解扩展User模型有两种方法。我可以创建一个UserProfile并添加一个名为“user_type
”的字段。其他方法是子类User模型。我认为子类化是一种更好的方法,因为有些字段因不同类型的用户而异。
我将有一个登录表单,但可以为不同类型的用户提供不同的注册表单。你为什么要选择其中一种方法?
我知道管理不同类型用户权限的最佳方法是通过用户组。如何创建组,检查用户是否属于某个组?选择如何扩展用户模型会影响我管理权限的方式吗?
答案 0 :(得分:1)
如果创建子类,主类将自动实例化,因此更方便。如果你创建了一个profile类,你需要手动实例化这两个类。
对于简单的情况,您可能需要在允许操作之前检查用户类型。您可以使用内置permissions backends of Django。
无论是子类还是创建配置文件类,都不会对组工作流程产生太大影响。组和用户之间始终存在ManyToMany关系。但是,最好在User和Group类之间进行,而不是在UserProfile和Group之间进行。
如果您计划一个更大的项目,我可以简要描述一个权限框架必须定义的内容: