Django_auth_ldap: пользователь из флага LDAP post_save 'созданный' флаг всегда ложный - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь разрешить пользователям LDAP входить в мое приложение Django. Каждому пользователю нужны дополнительные атрибуты, которые я хочу сохранить в модели профиля пользователя.

Я реализовал сигнал 'post_save' для создания userprofile при первоначальном входе в систему, однако обнаружил, что у пользователей LDAP созданный флаг всегда имеет значение False, даже если они никогда ранее не входили в систему.

Единственный раз created = True - это когда я создаю нового суперпользователя, используя manage.py

Мой post_save выглядит так:

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    print(sender)
    print("USERPROFILE1: {0} with id {1}".format(instance, instance.pk))
    print("CREATION: {0}".format(created))
    if created:
        print("USERPROFILE3")
        UserProfile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    print("USERPROFILE2")
    instance.userprofile.save()

При первом входе в систему профиль никогда не создается, поскольку «создан» всегда равен «Ложь»

<class 'django.contrib.auth.models.User'>
USERPROFILE1: lbird with id 1
CREATION: False
User has no userprofile. while authenticating
[...]
django.contrib.auth.models.User.userprofile.RelatedObjectDoesNotExist: User has no userprofile.
...