我正在尝试配置django_ldap_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"}
这可能很重要,配置文件类位于app / models / UserProfile.py文件中,而models / 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
有什么我想念的吗?用户数据,如姓/名和电子邮件填写得很好,但区域不会。
答案 0 :(得分:3)
这意味着此特定User对象没有关联的配置文件对象。 Django不会自动创建配置文件对象,也不会创建django-auth-ldap。通常,您将在User
模型上安装post_save信号处理程序以创建配置文件。
请参阅https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users。