Мастер форм Django и предварительный просмотр с помощью ModelForm

У меня есть большая модель Django (73 поля), которая будет подключена к ModelForm. Я хотел бы использовать комбинацию функций, найденных в приложениях Form Wizard и Form Preview.

То есть поля формы будут разделены на несколько страниц, и у пользователя будет возможность просмотреть/предварительно просмотреть данные до создания экземпляра модели.

Существуют ли какие-либо передовые методы для такого рода вещей или пример кода?


person Brian Tol    schedule 11.11.2009    source источник
comment
Это не стоит ответа, но в любом случае: может быть проблематично использовать FormWizard для чего-либо, кроме самых тривиальных вещей (по крайней мере, это было для меня). Вот одна вещь - вы не можете контролировать то, что передается форме __init__ очевидным образом (кроме начальных значений). Итак, как вы собираетесь предоставить аргумент ключевого слова instance для формы __init__? Конечно, есть есть способы - я, например, решил это, объявив внутренний класс, который наследуется от необходимого ModelForm и переопределяя __init__. Затем вы должны назначить этот класс элементу .form_list. Не очень очевидно...   -  person shylent    schedule 11.11.2009
comment
... и вам придется много иметь дело с такими вещами, если вы собираетесь использовать FormWizard. Я не говорю, что FormWizard плохой, но он, конечно, не очень удобен в использовании. А 73 поля? Я знаю, это может показаться глупым, но, может быть, есть способ упростить задачу, разбив ее на несколько более мелких задач? Например, реструктурировать ваши модели и работать с каждой из них отдельно или что-то в этом роде?   -  person shylent    schedule 11.11.2009
comment
Спасибо за отзыв, застенчивый. Верьте или нет, 73 поля упрощены. Нам просто нужно собрать много данных. :-)   -  person Brian Tol    schedule 11.11.2009


Ответы (2)


Я делаю нечто подобное в своем первом проекте Django. Используя FormWizard на основе сеанса, я настроил его так, чтобы пользователь мог прекратить отправку данных в любой форме.

В этот момент вы можете использовать FormPreview, вероятно, для отображения информации или просто динамически генерировать форму и показывать ее пользователю. Данные остаются в сеансе.

person iElectric    schedule 28.01.2010

Вы можете передать весь словарь в контекст, а затем получить к нему доступ в своем шаблоне:

# views.py
def get_context_data(self, **kwargs):
    context = super(MyWizard, self).get_context_data(**kwargs)
    context['all_data'] = self.get_all_cleaned_data()
    return context

# template.html
{{ all_data }}
person Özer S.    schedule 15.02.2018