2010-11-13 37 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

相关问题