Ошибка при создании пользователя - Python

Узнай цену своей работы

Формулировка задачи:

Всем привет. Не могу понять почему возникает исключение при создании пользователя через админку. Traceback
Спойлер
Код модели Profile
код Profile.admin.py
Самое интересное что когда я создаю пользователя напрямую
То юзер создается и как положено вместе с профайлом. Помогите разобраться в чем проблема может быть?

Решение задачи: «Ошибка при создании пользователя»

textual
Листинг программы
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    # Этот сигнал неправильно закодин, при создании профайла для пользователя когда из админки указан объект Stream
    # то этот код по сути уберет значение поля stream так как создаст профайл только с атрибутом user, что в дальнейшем и 
    # вывалится в ошибку. Поэтому этот метод нужно вообще убрать так как есть сигнал ниже да и вообще создание 
    # объекта Profile происходит автоматом.
    if created:
        Profile.objects.create(user=instance)
 
 
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    # Правда не все так просто, если при создании пользователя никакие поля Profile не трогать, а в объекте Profile
    # нет required полей, то объект Profile созда не будет. А этот код вывалит ошибку так как в поле Profile.user_id 
    # будет None вместо id пользователя. Тогда надо просто добавить заполнение Profile.user_id принудительно если 
    # сигнал создает пользователя
    if kwargs['created']:
        instance.profile.user_id = instance.id
    # вот и все)
    instance.profile.save()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы