Wenn Sie mit dem Benutzermodell von Django völlig zufrieden sind und nur
einige zusätzliche Profilinformationen hinzufügen möchten, können Sie einfach eine Unterklasse von
django.contrib.auth.models.AbstractUser erstellen und fügen Sie Ihre benutzerdefinierten Profilfelder hinzu. Diese Klasse stellt die vollständige Implementierung des Standardbenutzers
als abstraktes Modell bereit.
Also habe ich den AbstractUser-Klasse in meiner Users-Klasse hinzugefügt und ein Feld hinzugefügt. Aber wenn ich Python manage.py syncdb ausführe, erhalte ich die folgende Fehlermeldung:
Code: Select all
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.
models.py
Code: Select all
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)
Code: Select all
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)
Code: Select all
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'
Ich möchte die Benutzerinformationen in derselben Tabelle speichern als auth_user und nicht in einer neuen Tabelle.