我真的不想问这个问题,但关于此问题的不同教程和文档中的信息量对我来说是压倒性的。Django,在管理员中设置用户模型的角色
我有三类用户:Admin
,Guide
,User
:
Admin
可以做到在管理页面什么。Admin
可以改变简单Users
到Guides
Guide
只能创建GuideTour
模型对象,并只管理自己的旅游。User
无法登录管理页面。
如何在我的模型定义中设置这些用户,以便在我的管理页面中获得这种角色?
难道是单表继承模式吗?
我真的不想问这个问题,但关于此问题的不同教程和文档中的信息量对我来说是压倒性的。Django,在管理员中设置用户模型的角色
我有三类用户:Admin
,Guide
,User
:
Admin
可以做到在管理页面什么。Admin
可以改变简单Users
到Guides
Guide
只能创建GuideTour
模型对象,并只管理自己的旅游。User
无法登录管理页面。如何在我的模型定义中设置这些用户,以便在我的管理页面中获得这种角色?
难道是单表继承模式吗?
如果你使用默认的Django的身份验证系统(django.contrib.auth
),您可以创建用户组,并设置最在管理界面这些权限(首页>认证和授权>组)的:
“只管理他自己的旅程”的事情稍微复杂一点 - 您可能希望在Tour
模型中有ForeignKey
字段,并将用户链接到创建对象(并检查request.user
是否为“正确”用户每个编辑尝试)...
或者定义一个具有所需逻辑的方法。看到这个:Object Ownership in Django
我不认为这是值得的。在自定义管理页面中,您可以使用装饰器来访问方法,并且只有在用户具有相关权限时才使用模板中的基本if语句来呈现内容。与修改默认管理页面的麻烦相比,它具有非常大的灵活性。 –
@almostabeginner:是的,你说得对。取决于他想要做多少修改 - 自定义管理员可能更容易。 – helb
我建议创建自己的管理页面,而不是使用Django的默认值。当你创建自己的管理页面时,你有更多的自定义权力,并且在我看来,与修改管理页面相比,它的工作容易得多。 –