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
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
.