2012-04-23 26 views
2

我想配置django_ldap_auth从LDAP与他们的区域的数据来填充用户配置文件:设立django_auth_ldap来填充用户配置文件

我创建的概要文件的模型:

from django.db import models 
from django.contrib.auth.models import User 
class profile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    region = models.CharField(max_length=128, null=True, blank=True) 

    def __unicode__(self): 
     return '{0} profile'.format(self.user.username) 

    class Meta: 
     app_label = 'core' 

我配置了我设置映射到“L” LDAP属性(也就是区域的标记方式在LDAP)

AUTH_PROFILE_MODULE = 'core.profile' 
AUTH_LDAP_PROFILE_ATTR_MAP = {"region": "l"} 

这可能是重要的配置文件类坐镇内线的应用程序/模型/ UserProfile.py文件和型号/ init .py有from UserProfile import profile声明。

不过,我还是得在调试下面的消息,个人资料将不会填充:

search_s('dc=*****,dc=ru', 2, '(sAMAccountName=******)') returned 1 objects: CN=Болотнов Александр,OU=****,OU=****,DC=***,DC=ru 
Populating Django user ***** 
Django user **** does not have a profile to populate 

有什么我失踪?用户数据,如姓名和电子邮件填充很好,但区域不会。

回答

3

这意味着这个特定的用户对象没有关联的配置文件对象。 Django不会自动创建配置文件对象,django-auth-ldap也不会自动创建配置文件对象。通常,您将在User模型上安装post_save信号处理程序来创建配置文件。

请参阅https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users

+2

那么,AUTH_LDAP_PROFILE_ATTR_MAP存在什么?我是否需要手动从LDAP收集数据并填充配置文件? – abolotnov 2012-04-23 21:10:54

+1

'AUTH_LDAP_PROFILE_ATTR_MAP'完成你认为它的工作,但它只适用于已存在的配置文件对象。您需要通过其他机制为每个用户创建一个默认配置文件对象。这是标准的Django行为。 – psagers 2012-04-24 22:03:33