django FormWizard (formtools), как динамически изменять form_list на основе запроса? - PullRequest
0 голосов
/ 21 января 2019

Буду признателен за любые указания по этому вопросу.Имейте SessionWizardView из django-formtools, и я хочу иметь возможность отправлять в различных формах, в зависимости от того, к кому request.user.restaurant принадлежит пользователь / request.site.Разные рестораны будут иметь разные наборы форм для потока регистрации, и я не могу понять, как приспособить это.Кажется, мне нужно либо передать список фирм в urls.py .as_view(), либо заранее указать формы в классе.

MY_TEMPLATES = {
    '0': '/templates/wizard_1.html',
    '1': '/templates/wizard_2.html',
    '2': '/templates/wizard_3.html'
}

class MySignupWizard(SessionWizardView):
    form_list = [AddressForm, MenuForm, HoursForm,ContactForm]

    def get_template_names(self):
        return [MY_TEMPLATES[self.steps.current]]

    def done(self, form_list, **kwargs):
         etc.

Поскольку get_template_names(self) имеет доступ к self.request и self.request.site, я думаю, я мог бы иметь MY_TEMPLATES как вложенный словарь и передать в него self.request.site вместе с текущим шагом к ним.Хотя есть ли способ передать данные непосредственно в эти шаблоны?Как сделать запрос и передать Restaurant данные каждому шаблону?

Но я не могу понять, как динамически изменить form_list.Существуют стандартные четыре формы выше, но некоторые рестораны хотят только три формы или немного разные формы.Я хотел бы сделать что-то вроде:

restaurant = Restaurant.objects.get(url=request.site.domain)

и тогда у каждого ресторана будет список форм для использования, что-то вроде этого.Установите form_list или текущую форму как-нибудь.Есть идеи?

...