@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)


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

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

Войти через центр авторизации
Похожие вопросы
Верфь Екатеринбург
от 70 000 до 140 000 ₽
Junto Москва
от 80 000 до 120 000 ₽
Большая Тройка Москва
от 120 000 до 200 000 ₽
24 сент. 2020, в 09:09
2000 руб./за проект
24 сент. 2020, в 08:35
50000 руб./за проект
24 сент. 2020, в 08:23
10000 руб./за проект