【发布时间】:2014-02-07 14:24:16
【问题描述】:
我想使用 djangodocs 中所述的django.contrib.auth.models.AbstractUser 创建自定义用户模型:
如果您对 Django 的 User 模型非常满意,并且只想 添加一些额外的配置文件信息,您可以简单地子类化 django.contrib.auth.models.AbstractUser 并添加您的自定义配置文件 字段。这个类提供了默认的完整实现 用户作为抽象模型。
所以我在Users 类中继承了AbstractUser 类并添加了一个字段。但是当我运行python manage.py syncdb 时,出现以下错误:
CommandError: One or more models did not validate:
admin.logentry: 'user' has a relation with model login.users, which has either
not been installed or is abstract.
我查看了有关 stackoverflow 的其他问题,但无法解决错误。这是我的代码:
models.py
from django.conf import settings
from django.db import models
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import AbstractUser
from django.contrib import admin
class Users(AbstractUser):
college = models.CharField(max_length=40)
admin.site.register(Users, UserAdmin)
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from login.models import Users
from django import forms
class UsersChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = Users
class UsersAdmin(UserAdmin):
form = UsersChangeForm
fieldsets = UserAdmin.fieldsets + (
(None, {'fields': ('college',)}),
)
admin.site.register(Users, UsersAdmin)
settings.py
INSTALLED_APPS = (
'forms',
'login',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
AUTH_USER_MODEL = 'login.users'
编辑:
我想将用户信息存储在与auth_user 相同的表中,而不是新表中。
【问题讨论】:
-
是命名联盟吗?除了
class Users(AbstractUser):,你能试试其他型号名称吗 -
@Charlesliam 在将名称从
User更改为MyUser并运行python manage.py syncdb后,我收到一个新错误1146, Table stalker.login_myuser_user_permissions doesn't exist django -
您的用户相关权限的新表应该是
_ _user_permissions。我从你的陈述中相信了这一点。您的应用程序名称是 login,您的型号名称是myuser。您可以尝试手动将表添加到您的数据库中。
标签: python django model-view-controller django-models