所以我有这个方法:
def create_editor(self, email, dob, password):
user = self.create_user(
email,
dob,
accepted_tos=True,
password=password
)
try:
editors = Group.objects.get(name__iexact="Editors")
except Group.DoesNotExist:
editors = Group.objects.create(name="Editors")
editors.permissions.add(Permission.objects.get(codename="can_give_discount")) # add can_give_discount permission
user.groups.add(editors)
user.save()
return user
创建普通用户,然后将用户添加到editor
组
我希望能够从普通的django admin创建一个经理。
所以在下图中我想要另一个名为Add Manager
答案 0 :(得分:0)
首先看起来你想要做的是创建一个新的Manager
模型,该模型对用户有一个外键。然后从管理员端,您可以选择首先单击添加用户,然后导航到Manager模型并添加管理器(您还提供用户ID,以便它们通过foreignkey链接)。
但是,如果只是为了容纳权限和组,您还可以转到django admin中的groups
模型。
答案 1 :(得分:0)
Spoiler警告,django管理员并不是真的用于自定义。但是有一些人认为django准备好了,请在这里查看django管理员文档https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#custom-template-options。
这可能是您扩展/覆盖现有创建用户模板的解决方案(请参阅此处:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#overriding-vs-replacing-an-admin-template),例如添加使新用户成为编辑者的广告标志,您可以覆盖User.objects.create()
方法以使用该标志。
工作量最少但步骤为2的解决方案是添加管理操作(如果您希望详细视图中的按钮:django对象操作https://github.com/crccheck/django-object-actions)到"升级"编辑的普通用户。
答案 2 :(得分:0)
或许您可以添加另一个选择字段来扩展用户以说明添加的人是“编辑”还是“管理员”,并在保存时检查添加的用户是“经理”还是“编辑”,并覆盖保存以添加新用户到相应的组。