Динамическое создание нескольких форм

помогите решить небольшую проблему в Django. Я новичок в Python, и уже вторую неделю бьюсь над реализацией автоматического создания формы. В интернете по сложным формам не смог найти что-то подобное. Пробовал несколько вариантов. Но их реализовать не удалось. Вот один из последних.

Есть HTML форма: search.html

    <h4> Искать по химическому составу </h4>
<form action="{% url 'searchte' %}" method="get" class="">
<h5> Выберите элементы для поиска </h5>
<table>
<tr><td>Cu <input type="checkbox" name="copper" value="Cu" checked></td>
<td>Fe <input type="checkbox" name="copper" value="Fe"></td>
<td>Co <input type="checkbox" name="copper" value="Co"></td>
<td>Ni <input type="checkbox" name="copper" value="Ni"></td>
<td>Zn <input type="checkbox" name="copper" value="Zn"></td>
<td>As <input type="checkbox" name="copper" value="As"></td>
.....
</table>
<button type="submit" class="btn btn-success"> Искать </button>
</form>

forms.py

    class SearchForm(forms.Form):
        elem = forms.CharField(label='элемент')
        elemot = forms.DecimalField(label='от', max_digits=9, decimal_places=3)
        elemdo = forms.DecimalField(label='до', max_digits=9, decimal_places=3)
        typean = forms.ChoiceField(widget=forms.Select, choices=ANAL_CHOICES, label='Тип анализа')

views.py

  def searchte(request):
    error = ''
    if ('copper' in request.GET) and request.GET['copper'].strip():
        some_var = request.GET.getlist('copper')
        numberform = len(some_var)
        dicts = {}
        while numberform > 0:
            dicts[some_var[numberform - 1]] = str('form_' + str(numberform))
            dicts.update({some_var[numberform - 1]: str('form_' + str(numberform))})
            numberform -= 1
    
???
        form = forms.SearchForm
        form_1 = SearchForm(prefix="form_1")
        form_2 = SearchForm(prefix="form_2")
        form_3 = SearchForm(prefix="form_3")
        form_dict = {'form_1': form_1, 'form_2': form_2, 'form_3': form_3}
        return render(request, 'copperdb/searchte.html', context=form_dict)
    else:
        error = 'Форма была неверной'
    form = forms.SearchForm
    context = {
        'form': form,
        'error': error,
        }

Как реализовать функцию, которая бы извлекала из словаря form_dict, то количество чекнутых элементов (от одного до неизвестного количества) на search.html и генерировало соответствующее количество таблиц из form.py на новую страницу searchte.html. При этом присваивало (и рендерила) таблице соответствующее значение элемента (ключ в form_dict) для дальнейшего поиска в БД.

searchte.html

{% extends 'main/base1.html' %}

{% block title %}
Поиск
{% endblock %}
   
{% block content %}
{% csrf_token %}
<form action="{% url 'searchte' %}" method="get" class="">
{{ form_1 }}<br>
{{ form_2 }}<br>
{{ form_3 }}<br>
{{ form_4 }}<br>
{{ form_... }}<br>
<button type="submit" class="btn btn-success"> Искать </button>
</form>
{% endblock %}

Может быть я слишком усложнил и это можно реализовать проще?


Ответы (0 шт):