django FormWizard (formtools), как динамически изменять form_list на основе запроса?

Буду признателен за любые указания по этому вопросу. Есть 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 или текущая форма как-то. Есть идеи?

0 ответов

Другие вопросы по тегам