@inspekd

Django — как добавить поля профиля при регистрации?

Добрый день!
1) Есть 2 модели (Страндартная User и Profile)
2) Есть связь через сигналы - при создании пользователя создается профиль привязанный к нему.
3) Есть стандартная форма регистрации (Логин, email, пароль, пароль)

Вопрос - как мне к форме регистрации добавить поле для profile?
можно ли через сигналы передать значение доп поля вместе с user instance?


signals.py
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()


register.html
<fieldset class="form-group">
            <legend class="border-bootom mb-4">Регистрация</legend>
            {{ user_form|crispy }}
 </fieldset>
<div class="form-group">
            <button class="btn btn-outline-info" type="submit">Зарегистрироваться</button>
</div>


Хочу получить что-то вроде

Псевдокод:
{{ user_form|crispy }}
 <input type="text" id="city" >
<button type="submit">Зарегистрироваться</button>
-------------------------
чтобы значение city как-то передать сюда в сигналах: 
   Profile.objects.create(user=instance, city = input.city)


Спасибо!
  • Вопрос задан
  • 381 просмотр
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Вместо отдельного профиля стоит рассмотреть возможность переопределения модели пользователя (django custom user model). Тогда можно будет добавить новые поля в модель и в форму регистрации (которая судя по документации может быть переопределена).
В принципе, form.create() вполне может создавать и профиль по своим полям - как альтернатива кастомному пользователю в случае если вам вот прям абсолютно необходимы пользователи вообще без профилей.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы