2010-09-16 7 views
9

Je travaille actuellement sur un projet django. J'essaie d'ajouter un modèle UserProfile à mon modèle d'utilisateur. Dans mon models.py je:Problème avec l'administrateur Django enregistrement d'un profil d'utilisateur en ligne admin

class UserProfile(models.Model): 
    ''' 
    Extension to the User model in django admin. 
    ''' 
    user = models.ForeignKey(User) 
    site_role = models.CharField(max_length=128, choices=SITE_ROLE) 
    signature = models.CharField(max_length=128) 
    position_title = models.CharField(max_length=128) 
    on_duty = models.BooleanField(default=False) 
    on_duty_order = models.IntegerField() 

Dans mon admin.py je:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 

class UserAdmin(admin.ModelAdmin): 
    inlines = [UserProfileInline] 


admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

Quand je lance le serveur de développement (oui, je l'ai redémarré) Je reçois l'exception suivante:

NotRegistered at /admin 
The model User is not registered 

Cette exception provient de la ligne admin.site.unregister(User).

Cependant, quand je commente sur cette ligne, je reçois l'exception suivante:

AlreadyRegistered at /admin 
The model User is already registered 

Quelque chose au sujet de mon installation de django semble être un peu bi-polaire. J'ai passé une heure à faire des recherches sur ce problème et le code que j'ai semble bien fonctionner pour les autres. Quelqu'un at-il un aperçu de la raison pour laquelle cela pourrait se produire?

Merci, Travis

Répondre

19

Je suppose que vous soit faites des modules fou importation ... ou ... vous avez un problème de commande dans votre liste settings.INSTALLED_APPS. Assurez-vous que 'django.contrib.auth' apparaît sur votre liste avant votre application qui remplace l'administrateur par défaut. La liste devrait ressembler à ceci:

INSTALLED_APPS = (
    # django apps first 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.admin', 

    # your stuff from here on 
    'yourproject.userstuff', 
) 

Cette application de façon django enregistre le modèle User, puis vous désenregistrer et réinscrire avec votre propre ModelAdmin.

+0

Mon problème était l'ordre des applications installées. (ça sent la tête) "Duh !!!" Merci beaucoup pour votre aide Federico! – TravFisch

+0

Je ne l'aurais jamais découvert moi-même. Django n'est pas très utile dans ce cas avec l'exception "Non enregistré"! Merci! – kissgyorgy

+0

Commentaire de sauvetage merci beaucoup – ritmatter