2010-11-13 69 views
1

我想在Django中爲2個不同的用戶組實現一個認證系統。一名學生(使用他的用戶名&密碼),一名開發者(使用他的電子郵件&密碼)。目前我有一個(共同的)UserProfile模型,將由Student,Developer共享。這裏是我的模型代碼:在Django中遵循多重身份驗證後端的最佳實踐?

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    name = models.CharField(max_length=50, null=True, blank=True) 
    slug = models.SlugField(max_length=50, db_index=True, unique=True)#this will be used as his unique url identifier 
    objects = UserProfileManager() 

    class Meta: 
     abstract = True 

class Student(UserProfile): 
    ''' some student specific fields might go here ''' 

class Developer(UserProfile): 
    ''' some developer specific fields might go here ''' 

而在settings.py我給:

AUTH_PROFILE_MODULE = 'users.UserProfile' 

我得到驗證,只需用戶配置模式工作。但是,一旦我介紹了學生,開發人員整個事情搞砸了。我越來越

用戶配置有沒有屬性 'DoesNotExist'

(這是從UserProfileManager存在方法),也

SiteProfileNotAvailable

錯誤。 (即使在我開始編寫電子郵件身份驗證後端之前,我也會收到這些錯誤)。我錯過了什麼?什麼是最好的路徑來實現我想要的。

回答

0

問題可能是UserProfile的抽象定義。當你離開'abstract = True'時,事情應該起作用。但請注意這是如何改變你的表格方案的。

+0

如果我們離開Abstract = True,那麼它將在Db中創建UserProfile記錄。對 ?我想避免這種情況。我希望在各個表格中創建學生或開發人員配置文件。我認爲我創建兩個模型(學生,開發人員)的原因是,如果我們只有一個UserProfile模型並且區分學生/開發人員是通過一個簡單的標誌完成的,那麼任何人都只能使用一個auth後端。對 ?由於我想要多個auth後端,我使用了多種類型的用戶配置文件(Student,Developer) – 2010-11-26 08:05:33

相關問題