Problème avec L'administrateur Django enregistrer un profil d'utilisateur administrateur en ligne

je travaille actuellement sur un projet django. J'essaie d'ajouter un modèle UserProfile en ligne à mon modèle Utilisateur. Dans mon models.py j'ai:

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 j'ai:

class UserProfileInline(admin.StackedInline):
    model = UserProfile

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


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

quand j'exécute le serveur de développement (Oui, je l'ai redémarré) j'obtiens 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 cette ligne, je reçois l'exception suivante:

AlreadyRegistered at /admin
The model User is already registered

quelque chose à propos de mon installation à django semble un peu bi-polaire. J'ai passé une heure ou deux à chercher ce problème et le code que j'ai semble bien fonctionner pour les autres. Quelqu'un a-t-il une idée de ce qui pourrait arriver?

Merci, Travis

9
demandé sur Davor Lucic 2010-09-16 23:03:52

1 réponses

à mon avis, vous importez des modules fous... ou... vous avez un problème de commande avec 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 à quelque chose comme 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',
)

de cette façon, l'application de django enregistre le modèle User , puis vous le désinscrivez et le réinscrivez avec votre propre ModelAdmin .

19
répondu Federico Cáceres 2010-09-16 19:26:23