Я очень второй метод newz2000 над formWizard. Самая важная причина, как сказал newz2000, заключается в том, чтобы не потерять критическую информацию пользователя, которую он уже заполнил, если он потерял, скажем, последнюю форму в многошаговой.
Во-вторых, вам не нужно баловаться дополнительной сложностью мастера форм, когда он все равно не сильно вас экономит - вам все равно нужно определить отдельные формы, обработать все поля и иметь несколько шаблонов для мастера форм.
В-третьих, у вас есть преимущество в том, что вы можете использовать форму модели с использованием fields.keyorder для представления полей в каждой форме (убедитесь, что вы всегда отправляете экземпляр, если он существует).
Единственный недостаток, который я вижу в методе newz2000, если вы даже можете его так назвать, это то, что вы не можете принудительно установить обязательное поле на уровне модели для тех полей, которые появляются на более поздних этапах, и они должны быть выполнены. на уровне формы.
Еще один потенциал для ошибки (но это легко обрабатывается), если логика вашего приложения для этого объекта модели имеет некоторую зависимость от других обязательных полей типа, которые могут быть оставлены незаполненными, но вы должны проверять нулевое условие в этих полях в любом случае в представлениях / функциях, прежде чем работать с ними. Мы даже можем добавить одно поле типа «status_complete» в модель, в которой хранятся такие значения, как 1, 2, 3 для уровней шагов, выполненных для мульти-формы. Затем его можно использовать для условного ветвления кода, чтобы предлагать пользователю напоминания о завершении формы или при необходимости выполнить очистку.