Как создать динамические формы в django?

Я создаю web-приложение для своего клуба по рукопашному бою и впервые занимаюсь разработкой в Django.

У меня есть модели, которые я мигрировал в бд. База данных содержит информацию по каждому участнику клуба.

models.py
class Post(models.Model):
   firstname = models.CharField(max_length=100)
   lastname = models.CharField(max_length=100)
   adult = models.BooleanField(default=False)


Вот форма для создание нового участника.
forms.py
class CreateForm(forms.Form):
   firstname = forms.CharField(max_length=60, label="Укажите имя ")
   lastname = forms.CharField(max_length=60, label="Укажите фамилию ")


views.py
def index(request):
   createForm = CreateForm()
   if '_okcreatet' in request.POST:
       firstname = request.POST.get("firstname ")
       lastname = request.POST.get("lastname")
       adult = request.POST.get("adult ")
       b = Post(firstname='%s' % firstname, lastname='%s' % lastname)  # Внос данных в бд
       b.save()
   if '_okupdate' in request.POST:
       return HttpResponseRedirect('/tariff/')
   else:
       return render(request, "index.html", {"form": createForm)


index.html
<body>
   <form method="POST">
       {% csrf_token %}
   <table>
       {{form}}
   </table>
   <td><input name="_okcreatet" type="submit" value="OK"></td>
   <td><input name="_okupdate" onclick="location.href='{% url 'update' %}'" type="submit" value="OK"></td>
    {% block content %}

    {% endblock %}

   </form>


На форме есть две кнопки. "Занести данные нового члена клуба" и "Редактировать список участников". До нажатия на первую кнопку на форме создаётся статическая форма для вноса данных о новом члене. При нажатии на кнопку "Редактировать список участников" я хочу чтобы создавались динамические формы для каждой записи в бд (Форма с изменением фамилии, имени и checkbox для указании участника о его совершеннолетии) (для каждого участника клуба), через которые можно осуществлять изменения данных о участнике.

update.html
{% extends 'index.html' %}

{% block content %}
   <form method="POST">
       {% csrf_token %}
   <table>
       <!--{{form}}--> <!--На этом месте должны создаваться формы-->
   </table>
   <td><input name="_okclick" type="submit" value="OK"></td>

   </form>
{% endblock %}


urls.py
urlpatterns = [
   url(r'^$', views.index),
   url(r'^update/$', views.updt, name='update'),
]


Помогите пожалуйста. Я очень надеюсь что я ясно объяснил свою проблему ибо первый раз обращаюсь с проблемами на форум. Буду благодарен тем, кто поможет.
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 1
@szelga
1. форму лучше наследовать от ModelForm: https://djbook.ru/rel1.9/topics/forms/modelforms.html
2. чтобы сделать так, как вы хотите, я во View создал бы список (массив) из форм для каждой записи (экземпляра модели), отдавал бы их в шаблон, а там выводил в цикле в отдельной форме <form>. ещё надо в каждой форме как-то отдавать id, либо скрытым полем, либо в URL. чтобы этим всем удобно было орудовать с точки зрения конечного пользователя, стоит прикрутить AJAX.
3. если вы только осваиваете Django, лучше о своей затее (редактировать всё с одной страницы) на время забыть и написать самый простой, прямолинейный CRUD: отдельные View для списка записей, для создания записи, для просмотра и редактирования записи. когда отработаете навыки, тогда можно будет и кучу форм на одной странице, и AJAX, и всё остальное.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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