Мне нужно сделать мастер из двух форм. В одной форме мне нужно собрать некоторые данные, обработать их и предварительно заполнить поле во второй форме. Каков наилучший/простой способ сделать это?Django wizard взаимодействие между формами
1
A
ответ
3
Добавить get_form_initial()
метод в вашем классе мастера, для второго шага используйте данные с первого шага, используя get_cleaned_data_for_step()
.
Что-то вроде:
class myWizardView:
def get_form_initial(self, step):
if int(step) == 1:
# get cleaned data from prev step
return self.get_cleaned_data_for_step(str(int(step) - 1))
Вы можете манипулировать Dict иметь соответствующие имена атрибутов и т.д.
Больше ссылка на Form Wizard
Ну ... что не работает :(Во-первых, шаги пронумерованы от 0, а во-вторых, они являются строками. Поэтому на самом деле мне нужно проверить, есть ли «step ==» 1 ». Это не большая проблема. что 'self.get_cleaned_data_for_step (i)' где i в [0,1,2] возвращает None. И 'self.ge t_cleaned_data_for_step ('0') 'заканчивается на' RuntimeError: превышена максимальная глубина рекурсии'. –
Я добавил некоторую информацию к предыдущему комментарию, я послал не законченный один по ошибке. –
@SzymonGuz, django хранит шаги как строку, поэтому передайте 'i' как строку, используя' str (i) 'to' get_cleaned_data_for_step() '. Я также обновил ответ. – Rohan