Ich habe das django 1.5 Benutzermodell wie unten erweitert und ich habe Probleme, wenn ich irgendeine Reihe in die Datenbank einfüge. Meine models.py Datei sieht wie folgt aus.benutzerdefiniertes Benutzermodell in django 1.5
class MyUserManager(BaseUserManager):
def create_user(self, email, password=None):
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=MyUserManager.normalize_email(email),
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
user = self.create_user(email,
password=password
)
user.is_admin = True
user.save(using=self._db)
return user
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='Email address',
max_length=255,
unique=True,
db_index=True,
)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
def get_full_name(self):
# The user is identified by their email address
return self.email
def __unicode__(self):
return self.email
Und meine admin.py sieht wie folgt aus.
class MyUserAdmin(UserAdmin):
# The forms to add and change user instances
form = UserChangeForm
add_form = UserCreationForm
# The fields to be used in displaying the User model.
# These override the definitions on the base UserAdmin
# that reference specific fields on auth.User.
list_display = ('email', 'is_admin')
list_filter = ('is_admin',)
fieldsets = (
(None, {'fields': ('email', 'password')}),
('Permissions', {'fields': ('is_admin',)}),
('Important dates', {'fields': ('last_login',)}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2')}
),
)
search_fields = ('email',)
ordering = ('email',)
filter_horizontal =()
// Now register the new UserAdmin...
admin.site.register(MyUser, MyUserAdmin)
// ... and, since we're not using Django's builtin permissions,
// unregister the Group model from admin.
admin.site.unregister(Group)
folgte ich die oben vom django Tutorial (https://docs.djangoproject.com/en/dev/topics/auth/customizing/#a-full-example)
nun das Problem, das ich habe, ist, wenn ich etwas im Admin ändern, ich bin eine Fehlermeldung unterhalb dem Sprechen zu bekommen.
(1452, 'kann kein Kind Zeile hinzufügen oder aktualisieren: a. Fremdschlüssel fehlschlägt (csiop
django_admin_log
, CONSTRAINT user_id_refs_id_c8665aa
FOREIGN KEY (user_id
) LITERATUR auth_user
(id
))')
Also, es sieht aus wie Die Tabelle django_admin_log benötigt immer einen Fremdschlüsselverweis auf das auth_user-Modell. Da ich jedoch ein Kundenbenutzermodell erstellt habe, werden die Benutzerdetails bei der Erstellung eines Superusers nur in der MyUser-Tabelle des Kunden gespeichert und im auth_user-Modell wird kein Eintrag erstellt, der das Problem zu verursachen scheint.
Wie löse ich dieses Problem? Bitte vorschlagen.
Dank Sreekanth
Haben Sie 'AUTH_USER_MODEL' in Ihren Einstellungen festgelegt? https://docs.djangoproject.com/de/dev/topics/auth/customizing/#substituting-a-custom-user-model – Ngenator
Ja. Ich habe AUTH_USER_MODEL festgelegt, um auf benutzerdefiniertes MyUser zu verweisen. – Dev