@nameless_king

Можно ли вывести форму в цикле?

Здравствуйте. Есть такая модель
class Transaction(models.Model):
    trans_id = models.CharField('ID транзакции', max_length=255, null=False, blank=False)
    trans_description = models.TextField('Описание', default=None, null=True, blank=True)

Ее форма
class TxDescription(forms.ModelForm):
    trans_description = forms.CharField(label='Описание', required=False)

    class Meta:
        exclude = ['trans_id']


Как вывести эту форму для каждого объекта? Точнее как вывести и корректно записать данные
Пробовал выводить как-то так
<ul class="list-group">
{% for tx in trans %}
    <h5>{{ tx.trans_id }}</h5>
    <form action="{% url 'url' %}"  method="post">
    {% csrf_token %}
    {{ form.as_p }}
    </form>
    <p></p>
{% endfor %}
</ul>


В итоге выводится как надо, к каждому trans_id своя форма с описанием, но при заполнении одной заполняются все и создается новый объект без id с новым описанием. Вьюха обычная FBV с model.objects.all() и form.save()
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@serhiops
Python/JavaScript/C++
Циклом выводить ничего не нужно. Есть такое понятие как Наборы форм.
Для создания наборов форм, связанных с моделями, применяется быстрое объявление посредством фабрики классов - функции modelformset_factory из модуля django.forms.
Более детально в русскоязычной документации
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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