2017-02-28 165 views
0

我真的不想问这个问题,但关于此问题的不同教程和文档中的信息量对我来说是压倒性的。Django,在管理员中设置用户模型的角色

我有三类用户:AdminGuideUser

  1. Admin可以做到在管理页面什么。
  2. Admin可以改变简单UsersGuides
  3. Guide只能创建GuideTour模型对象,并只管理自己的旅游。
  4. User无法登录管理页面。

如何在我的模型定义中设置这些用户,以便在我的管理页面中获得这种角色?

难道是单表继承模式吗?

+1

我建议创建自己的管理页面,而不是使用Django的默认值。当你创建自己的管理页面时,你有更多的自定义权力,并且在我看来,与修改管理页面相比,它的工作容易得多。 –

回答

1

如果你使用默认的Django的身份验证系统(django.contrib.auth),您可以创建用户组,并设置最在管理界面这些权限(首页>认证和授权>组)的:

enter image description here

“只管理他自己的旅程”的事情稍微复杂一点 - 您可能希望在Tour模型中有ForeignKey字段,并将用户链接到创建对象(并检查request.user是否为“正确”用户每个编辑尝试)...

或者定义一个具有所需逻辑的方法。看到这个:Object Ownership in Django

+2

我不认为这是值得的。在自定义管理页面中,您可以使用装饰器来访问方法,并且只有在用户具有相关权限时才使用模板中的基本if语句来呈现内容。与修改默认管理页面的麻烦相比,它具有非常大的灵活性。 –

+0

@almostabeginner:是的,你说得对。取决于他想要做多少修改 - 自定义管理员可能更容易。 – helb