iamkisly
@iamkisly
Собираю админки на dotnet и extjs

Как пробросить артибуты из django-auth-ldap в расширенную модель User?

переопределил и разрегистрировал нового наследника (пусть будет app.User) от AbstractBaseUser, подключил пакет django-auth-ldap чтобы работала авторизация через AD учетки и группы, и все вроде бы заработало. Затем захотели вытащить больше данных из ldap, и записать их в отдельную таблицу связанную (чтобы в одном месте лежало) с app.User, как one-to-one. Считай прям по гайду)

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)


Вот тут ничего и не получилось, потому что в backend пакета django-auth-ldap модель юзера получается через стандартную джанговскую функцию get_user_model() и именно в нее переносятся значения атрибуты из ldap. Проблема в том, что в этот момент модель app.User еще ничего не знает о связанной Profile, ее как бы и нет еще. Тем более потому что Profile требуется идентификатор от app.User.. и соответственно записывать атрибуты еще некуда.
Танцы вокруг signals что-то не помогли, или я не туда танцую. Каким образом можно решить эту проблему ?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
iamkisly
@iamkisly Автор вопроса
Собираю админки на dotnet и extjs
Победил, но пришлось форкнуть django-auth-ldap
https://github.com/iamkisly/django-auth-ldap/commi...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы