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
или текущая форма как-то. Есть идеи?