2013-03-03 15 views
8

Ho aggiornato un'applicazione che avevo su Django 1.4.5 su Django 1.5 e ho appena finito di migrare a un modello utente personalizzato. Quando accedo alla mia app, utilizzando il mio modulo di autenticazione, con le mie credenziali di superutente (create quando si esegue manage.py syncdb), tutto funziona correttamente.L'amministratore di Django non si collega correttamente con il modello utente personalizzato

Sono in grado di ottenere autenticato e se vado a /admin, ho già effettuato l'accesso, come previsto. Sono in grado di navigare e utilizzare il pannello di amministrazione perfettamente. Tuttavia, se provo ad accedere al pannello di amministrazione da /admin, utilizzando il modulo di login Django admin, ottengo l'errore:

Please enter the correct email and password for a staff account. Note that both fields may be case-sensitive.

ho qualche indagine e ho pensato che potrebbe avere qualcosa a che fare con ModelAdmin, così ho seguito da this example dai documenti e creato una personalizzata ModelAdmin. Tuttavia, il problema persiste ancora.

Qualche idea che cosa potrebbe causare questo?

+0

Hai AUTH_USER_MODEL impostato in settings.py, giusto? –

+0

Sì, ho quel set. –

+0

Hai usato 'AbstractUser' o' AbstractBaseUser' per l'estensione del tuo modello utente? –

risposta

4

Hai aggiunto righe seguenti alla tua funzione create_superuser che è sotto BaseUserManager? Potrebbe assomigliare a questo:

class CustomUserManager(BaseUserManager): 
    def create_user(self, username, email, password=None): 
     if not username: 
      raise ValueError('Dude you need a username.') 
     if not email: 
      raise ValueError(
       'type an e-mail..') 

     new_user = self.model(
      username=username, 
      email=CustomUserManager.normalize_email(email)) 
     new_user.set_password(password) 
     new_user.save(using=self._db) 
     return new_user 

    def create_superuser(self, username, email, password): 
     new = self.create_user(
      username, 
      email, 
      password=password 
     ) 
     new.is_active = True 
     new.is_staff = True 
     new.is_superuser = True 
     new.save(using=self._db) 
     return new 

Focus on:

new.is_active = True 
    new.is_staff = True 
    new.is_superuser = True 
+2

i controlli di amministrazione di django per 'request.user.is_active' e' request.user.is_staff' per registrare gli utenti, quindi penso che dovrebbe aggiungere 'new.is_active = True 'per quella lista su" focus on ". – AJJ

Problemi correlati