切换到 Django 自定义用户模型、组和权限

Posted

技术标签:

【中文标题】切换到 Django 自定义用户模型、组和权限【英文标题】:Switch to Django Custom User Model, Groups and Permissions 【发布时间】:2013-07-23 15:23:57 【问题描述】:

我使用用户配置文件更新了我的 django 1.4 应用程序以使用 1.5 自定义用户模型。

#core/models.py

from django.contrib.auth.models import User, UserManager, BaseUserManager, AbstractUser

class MyUserManager(BaseUserManager):
    pass

class MyUser(AbstractUser):
    phone = models.CharField(blank = True, max_length = 18)
    completed_step = models.IntegerField(default = 0)
    objects = MyUserManager()

我为 south 编写了架构迁移,并且所有数据都已成功导入。

否则,我对 auth_group 和 auth_permision 有疑问。 Django 不能生成任何额外的表,但是当我想获得权限或组时,我有这个带有 JOIN 的 SQL 到额外的表:

 SELECT ...
      FROM "core_myuser"
      WHERE "core_myuser"."id" = 61 (8ms) Found 1 matching rows
 SELECT ...
      FROM "core_myuser"
      WHERE "core_myuser"."id" = 363 (1ms) Found 1 matching rows
 SELECT ...
      FROM "auth_group"
      INNER JOIN "core_myuser_groups" ON ("auth_group"."id" = "core_myuser_groups"."group_id")
      WHERE "core_myuser_groups"."myuser_id" = 363

内部服务器错误

http://cl.ly/image/0W1G3F2S3f3X

【问题讨论】:

【参考方案1】:

您尚未在数据库中创建适当的表。 在切换用户模型之前制作表格:

python manage.py syncdb
#or if you're use south
python manage.py schemamigration core --initial
python manage.py migrate core

然后为您的用户数据编写自定义迁移脚本,否则您将丢失它。

看看this manual 和这个documentation,它会帮助你理解应该做什么。

【讨论】:

以上是关于切换到 Django 自定义用户模型、组和权限的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.6 - 以编程方式创建组和权限

Django 用户在创建/权限提升方面的权利

管理员中的 Django 自定义用户模型应用程序级别权限管理

将 Django auth UserAdmin 用于自定义用户模型

如何在自定义仪表板中显示 django 角色和权限

Django - 向用户授予自定义权限