2013-03-03 68 views
8

我將Django 1.4.5上的應用程序升級到Django 1.5,並完成遷移到自定義用戶模型。當我登錄到我的應用程序時,使用我自己的身份驗證表單,使用我的超級用戶憑據(在執行manage.py syncdb時創建),一切正常。Django admin無法正確登錄自定義用戶模型

我能夠得到身份驗證,如果我去/admin,我已按預期登錄。我能夠完美地導航和使用管理面板。不過,如果我嘗試從/admin登錄到管理面板,使用Django管理登錄表單,我得到的錯誤:

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

我做了一些調查,並認爲它可能有一些做ModelAdmin,所以我跟隨this example從文檔並創建了一個自定義ModelAdmin。但是,問題仍然存在。

任何想法可能導致這種情況?

+0

你AUTH_USER_MODEL settings.py中設置正確:在

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 

重點是什麼? – 2013-03-03 03:15:31

+0

是的,我有那套。 – 2013-03-03 03:47:00

+0

您是否爲您的用戶模型擴展使用了'AbstractUser'或'AbstractBaseUser'? – 2013-03-03 03:58:46

回答

4

您是否在函數中添加了以下行BaseUserManager?這可能是這樣的:

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

django的管理員檢查'request.user.is_active'和'request.user.is_staff'來登錄用戶,所以我認爲他應該添加'new.is_active = True'到該列表以「專注於」。 – AJJ 2013-09-02 08:07:23