Лирическое отступление. С полем BaseToView.group_client_list
безобразие какое-то. Оно будет вычисляться один раз при запуске приложения. При добавлении и удалении экземпляров модели GroupAssignment
поле BaseToView.group_client_list
не будет меняться. Оптимизация получается копеечная, а проблемы осязаемы и крайне неприятны. Да и оптимизацией это назвать сложно... Одумайтесь! Пропишите всю фильтрацию в BaseToView.get_context_data
. Но мне лично неприятно писать логику в этом методе. Лучше написать отдельный метод, возвращающий отфильтрованный список групп. Но если вы встали не с той ноги и решили отстрелить её, что ж — так тому и быть! )
Теперь, Что касается вашего непосредственного вопроса. Вы полностью переопределили метод AddClientSelPN.form_valid
, а делать этого не стоило. Посмотрите, что делает этот метод в родительских классах — там много всего происходит. В общем всё сводится к тому, что форма проверяется, объект сохраняется (лишь в случае модельных форм), и происходит редирект на адрес, возвращаемый методом get_success_url
. Вы же всё это пропустили и сделали самодельный редирект. Т.е. в вашем случае форма даже не подвергалась проверке. Это причина.
Вариантов решения три (в порядке чистоты):
- Оставить в покое
AddClientSelPN.form_valid
, и переопределить AddClientSelPN.get_success_url
.
- Нормально реализовать
AddClientSelPN.form_valid
с обращением к суперметоду.
- Нормально реализовать
AddClientSelPN.form_valid
самостоятельно прописав всю необходимую логику этого метода.