2010-09-16 9 views
9

Obecnie pracuję nad projektem django. Próbuję dodać model UserProfile do mojego modelu użytkownika. W moim models.py mam:Problem z administratorem Django rejestrującym profil użytkownika inline

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() 

W moim admin.py mam:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 

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


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

Kiedy uruchomić serwer rozwoju (tak, mam go ponownie uruchomiony) pojawia się następujący wyjątek:

NotRegistered at /admin 
The model User is not registered 

Ten wyjątek pochodzi z linii admin.site.unregister(User).

Jednak, kiedy skomentuj tę linię, otrzymuję następujący wyjątek:

AlreadyRegistered at /admin 
The model User is already registered 

Coś o mojej konfiguracji django wydaje się być trochę dwubiegunowego. Spędziłem około godziny na badaniu tego problemu, a kod, który mam wydaje się działać świetnie dla innych. Czy ktokolwiek ma jakiś wgląd w to, dlaczego tak się dzieje?

Dzięki Travis

Odpowiedz

19

moje przypuszczenie, że albo robią jakiś szalony moduł importowania ... albo ... masz problem zamawiania na liście settings.INSTALLED_APPS. Upewnij się, że 'django.contrib.auth' pojawia się na liście przed aplikacją, która zastępuje domyślnego administratora. Lista powinna wyglądać mniej więcej tak:

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', 
) 

aplikacja tamtędy Django rejestruje model User, a następnie wyrejestrować i ponownie zarejestrować go z własnego ModelAdmin.

+0

Moim problemem była kolejność zainstalowanych aplikacji. (smacks forhead) "Duh !!!" Bardzo dziękuję za pomoc Federico! – TravFisch

+0

Nigdy bym się tego nie dowiedział. Django nie jest bardzo pomocny w tym przypadku z wyjątkiem "Niezarejestrowanym"! Dzięki! – kissgyorgy

+0

Oszczędny komentarz dzięki bardzo – ritmatter

Powiązane problemy