切换到 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 自定义用户模型应用程序级别权限管理