Dango: форма рендеринга пустых полей при вызове с POST и экземпляром модели - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу добавить параметр edit в шаблон, который просто извлекает данные из модели и отображает их.При нажатии кнопки edit форма, которая была ранее заполнена и сохранена, должна отображаться как заполненная сохраненными данными.Но в моем случае форма отображается с пустыми полями и с надписью «Это поле обязательно» над каждым полем.Как отобразить форму в редактируемом режиме с предварительно заполненными полями?

Это представление для первого сохранения данных:

@login_required
def addprofileView(request):
    if request.method == "POST":
       form = UserProfileForm(request.POST, request.FILES)
       if form.is_valid():
           new_user_profile = form.save(commit=False)
           new_user_profile.user = request.user
           new_user_profile.save()
           return redirect('add_license')
    else:
         form = UserProfileForm()
    return render(request, 'addprofile.html', {'form': form})

И это представление для редактирования, которое должновернуть предварительно заполненную форму:

@login_required
def editprofileView(request, pk):
    ac = get_object_or_404(Account, pk=pk)
    if request.method == "POST":
       form = UserProfileForm(request.POST, instance=ac)
       if form.is_valid():
           ac = form.save(commit=False)
           ac.user = request.user
           ac.save()
           return redirect('view_profile', ac.pk)
    else:
         form=UserProfileForm(instance=ac)
    return render(request, 'addprofile.html', {'form': form})

@login_required
def ProfileView(request, pk):
       profile = Account.objects.filter(pk = pk)
       return render(request, 'userprofile.html', {'pr': profile})

Что я делаю не так?

Шаблон, который перенаправляет на editprofileView:

 {% block content %}
 {% for p in pr %} 
      Name: {{ request.user.username }} 
      Mobile: {{ p.mobile }} 
      city: {{ p.city }} 
      building no: {{ p.building_no }} 
      state: {{ p.state }} 
      ZIP: {{ p.zip }} 
      Country: {{ p.country }} 
      Sex: {{ p.sex }} 
      <form action="{% url 'edit_profile' p.pk %}" method="post">
         {% csrf_token %}
         <input type="submit" value="Edit">
       </form>
   {% endblock %}

URL-адрес действия в этом шаблонеотправляет атрибут учетной записи pk в editprofileView.

1 Ответ

0 голосов
/ 22 февраля 2019

Ну, проблема в том, что вы сначала размещаете эту точку зрения.Вы не должны;POST для отправки данных.Эта кнопка не отображается, но она должна быть либо простой ссылкой, либо частью формы с method="GET".

...