Настройка django_auth_ldap для заполнения профиля пользователя

Я пытаюсь настроить 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'

Я сконфигурировал мои настройки для сопоставления с атрибутом LDAP 'l' (именно так регион отмечен в 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

Я что-то пропустил? Пользовательские данные, такие как имя / фамилия и адрес электронной почты, заполняются просто отлично, а регион - нет.

1 ответ

Это означает, что данный конкретный объект User не имеет ассоциированного объекта профиля. Django не создает автоматически объекты профиля, как и django-auth-ldap. Как правило, вы устанавливаете обработчик сигнала post_save на User Модель для создания профилей.

См. https://docs.djangoproject.com/en/1.4/topics/auth/.

Другие вопросы по тегам