Страницы

Поиск по вопросам

суббота, 1 февраля 2020 г.

Автоматическое заполнение формы в Django Template

#python #forms #шаблоны #django


Добрый день.
Есть форма пользовательского профиля.
При выводе на экран ее надо заполнить данными текущего пользователя.
Как это можно сделать?
class Profile(models.Model):
    user = models.OneToOneField(User)
    img = models.ImageField(upload_to='user_pic/', blank=True, verbose_name='аватар')
    phone = models.IntegerField(max_length=10, verbose_name=u'контактный телефон')

class ProfileForm(forms.Form):
    first_name = forms.CharField(label=u'Имя', max_length=30, required=True)
    last_name = forms.CharField(label=u'Фамилия', max_length=30, required=True)
    password = forms.CharField(label=u'Пароль', widget=forms.PasswordInput, min_length=4,
required=True)
    email = forms.EmailField(label=u'E-mail', required=True)
    phone = forms.CharField(label=u'Контактный телефон', max_length=10, required=True)
    img = forms.ImageField(label=u'Ваш автар или логотип', required=False)

@render_to('profile.html')
def edit_profile(request):
    form = LoginForm()

 {{ form_profile.as_p }}

Хочется заполнять форму автоматически (руками в шаблоне чтобы особо ничего не расписывать). 
Спасибо!    


Ответы

Ответ 1



На сколько я понял, Вам необходмо воспользоваться наследованием форм от моделей документация. Используя правильное наследование формы от модели, вы сможете автоматически заполнять форму данными из уже существуещего обьекта: form = ProfileForm(instance=user)

Ответ 2



Например можно передать в форму словарь data = {'first_name': 'Ivan', 'last_name': 'Ivanov', 'email': 'a@b.ru'} form = ProfileForm(data) Попробуйте еще user = Profile.objects.get(user=self) form = ProfileForm(user) могу сильно ошибаться, т.к. не помню уже как можно узнать свой профайл

Комментариев нет:

Отправить комментарий