Пользовательская модель пользователя в ДжангоPython

Программы на Python
Ответить
Anonymous
 Пользовательская модель пользователя в Джанго

Сообщение Anonymous »

Я хочу создать собственную модель пользователя, используя django.contrib.auth.models.AbstractUser, как указано в djangodocs:


Если вас полностью устраивает пользовательская модель Django и вы просто хотите
добавить некоторую дополнительную информацию о профиле, вы можете просто создать подкласс
django.contrib.auth.models.AbstractUser и добавьте поля
своего профиля. Этот класс обеспечивает полную реализацию пользователя по умолчанию
как абстрактную модель.


Поэтому я унаследовал AbstractUser в моем классе Users и добавил поле. Но когда я запускаю 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, а не в новой таблице.

Подробнее здесь: https://stackoverflow.com/questions/211 ... -in-django
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»