Ниже я создал FormView, который будет динамически возвращать класс формы в зависимости от того, на каком этапе процесса находится пользователь. У меня возникли проблемы с методом get_form
.Он возвращает правильный класс формы в запросе get, но почтовый запрос не работает.
tournament_form_dict = {
'1':TournamentCreationForm,
'2':TournamentDateForm,
'3':TournamentTimeForm,
'4':TournamentLocationForm,
'5':TournamentRestrictionForm,
'6':TournamentSectionForm,
'7':TournamentSectionRestrictionForm,
'8':TournamentSectionRoundForm,}
class CreateTournament(FormView):
template_name = 'events/create_tournament_step.html'
def __init__(self, *args, **kwargs):
form_class = self.get_form()
success_url = self.get_success_url()
super(CreateTournament, self).__init__(*args, **kwargs)
def get_form(self, **kwargs):
if 'step' not in kwargs:
step = '1'
else:
step = kwargs['step']
return tournament_form_dict[step]
def get_success_url(self, **kwargs):
if 'step' not in kwargs:
step = 1
else:
step = int(kwargs['step'])
step += 1
if 'record_id' not in kwargs:
record_id = 0
else:
record_id = int(kwargs['record_id'])
return 'events/tournaments/create/%d/%d/' % (record_id, step)
Сбой почтового запроса в django\views\generic\edit.py
в строке get_form
, что я понимаю, потому чтоЯ переписал его в своем FormView:
def post(self, request, *args, **kwargs):
"""
Handle POST requests: instantiate a form instance with the passed
POST variables and then check if it's valid.
"""
form = self.get_form()
if form.is_valid(): …
return self.form_valid(form)
else:
return self.form_invalid(form)
Однако, когда я изменяю имя моего пользовательского get_form
метода на gen_form
, примерно так:
def __init__(self, *args, **kwargs):
form_class = self.gen_form()
success_url = self.get_success_url()
super(CreateTournament, self).__init__(*args, **kwargs)
def gen_form(self, **kwargs):
if 'step' not in kwargs:
step = '1'
else:
step = kwargs['step']
return tournament_form_dict[step]
мой класс формы не обрабатывается в запросе get и оценивается как None
.Я ломаю голову над тем, почему, когда я перезаписываю метод get_form
, он работает, а мой собственный именованный метод - нет?Кто-нибудь знает, что это за недостаток?