Ссылка на атрибуты модели в форме - PullRequest
0 голосов
/ 19 марта 2019

Я надеюсь отредактировать несколько моделей одновременно на одной странице.Вместо того, чтобы использовать наборы форм, я получил это для работы с массивом форм, которые я перебираю в шаблоне в представлении:

{% extends 'app_base.html' %} {% block content %}
<p>{{message}}</p>
<form method="post">{% csrf_token %} {% for form in forms %}{{ form.as_p }}{% endfor %}
    <input type="submit" value="Submit" />
</form>
{% endblock %}

Однако, что раздражает, я не вижу, что я редактирую в выходных данных какэто просто набор текстовых полей без меток.

Таким образом, есть ли какой-либо способ доступа к атрибутам модели рядом с формой, через которую я делаю цикл, например:

{% for form in forms %}{{form.object.name}}: {{ form.as_p }}{% endfor %}

1 Ответ

1 голос
/ 19 марта 2019

Если вы используете ModelForm для всех своих форм, вам нужно инициализировать его с обновляемым экземпляром модели (MyForm(data=request.POST, instance=...)).

Вы можете получить доступ к instance формы, это просто атрибут в форме: form.instance.

Обратите внимание, что он всегда присутствует на ModelForm, даже если вы не передаете instance при инициализации. В этом случае это инициализированный, а не сохраненный экземпляр модели вашей формы. Так что form.instance.pk = None в этом случае.

...