Django 3: объединить наборы форм в одном раскрывающемся меню - PullRequest
0 голосов
/ 18 июня 2020

У меня есть рабочая модель из двух форм, которые я хотел бы объединить:

enter image description here

forms.py:

FS1 = modelformset_factory(SettRelation, fields=("sett", "qty", ), 
                                         extra=1, 
                                         widgets={'sett': forms.Select(attrs={'class': 'form-control'}),
                                                  'qty': forms.NumberInput(attrs={'class': 'form-control',})})

FS2 = modelformset_factory(PartRelation, fields=("part", "qty", ), 
                                         extra=1, 
                                         widgets={'part': forms.Select(attrs={'class': 'form-control'}),
                                                  'qty': forms.NumberInput(attrs={'class': 'form-control',})})

views.py:

def create_inq_with_sets(request):
    if request.method == 'GET':
        inquiry_form = InquiryModelForm(request.GET or None)
        setts_form = FS1(queryset=SettRelation.objects.none())
        parts_form = FS2(queryset=PartRelation.objects.none())
    elif request.method == 'POST':
        inquiry_form = InquiryModelForm(request.POST)
        setts_form = FS1(request.POST)
        parts_form = FS2(request.POST)
        if inquiry_form.is_valid() and setts_form.is_valid() and parts_form.is_valid():
            i = inquiry_form.save()
            for form in setts_form:
                tmp = form.save(commit=False)
                tmp.inquiry = i
                tmp.save()
            for form in parts_form:
                tmp = form.save(commit=False)
                tmp.inquiry = i
                tmp.save()
            return redirect("inquiry-list")
    return render(request, "gap/add_inquiry.html", {"inquiry": inquiry_form, 
                                                    "setts": setts_form, 
                                                    "parts": parts_form, })

. html (упрощенно):

{{ setts.management_form }}
    {% for sett in setts %}
        {{ sett.sett }}
        {{ sett.qty}}
    {% endfor %}
{{ parts.management_form }}
    {% for part parts %}
        {{ part.part}}
        {{ part.qty}}
    {% endfor %}

Я хотел бы объединить два набора форм в одном раскрывающемся меню, как показано на рисунке - могу ли я сделать это с помощью шаблона?

enter image description here

...