Django Wizard Form и другие представления на одной странице - PullRequest
0 голосов
/ 30 августа 2018

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

Я пробовал:

urls.py

urlpatterns = [url('', GroupsWizard.as_view(form_list), name = 'index'),]

views.py

def index(request):
    groups_render = Groups.objects.all()
    return render(request, 'index.html', {'groups_render' : groups_render})

class GroupsWizard(SessionWizardView):

    def get_template_names(self):
        return 'index.html'

    def done(self, form_list, **kwargs):
        data = {k: v for form in form_list for k, v in form.cleaned_data.items()}
        instance = Groups.objects.create(**data)
        return render(self.request, 'done.html', {
            'form_data': [form.cleaned_data for form in form_list],
        })

index.html

<div>
  {{ wizard.form.management_form }}
    {% for form in wizard.form.forms %}
      {{ form }}
    {% endfor %}
</div>
<div>
{{ groups_render }}
</div>

Спасибо

1 Ответ

0 голосов
/ 31 августа 2018

Я нашел это,

Я использовал функцию get_context_data в views.py:

class GroupsWizard(SessionWizardView):

    def get_template_names(self):
        return 'index.html'

    def get_context_data(self, form, **kwargs):
        context = super(GroupsWizard, self).get_context_data(form = form, **kwargs)
        context_data = Groups.objects.all()
        context.update({'context_data': context_data})
        return context

    def done(self, form_list, **kwargs):
        data = {k: v for form in form_list for k, v in form.cleaned_data.items()}
        instance = Groups.objects.create(**data)
        return render(self.request, 'done.html', {
            'form_data': [form.cleaned_data for form in form_list],
        }) 
...