Запретить проверку формы в CreateView, пока не потребуется
Я хочу использовать CreateView для создания пользователей и установки некоторых дополнительных значений в профиле, связанных с моделью пользователя. Эти значения ex. город. Это значение города происходит от другой модели (City) ForeignKeyed для модели Region. ForeignKeyed для модели Country... и так далее.
Таким образом, чтобы выбрать правильный город, пользователь должен сначала выбрать правильную страну и правильный регион. Мое решение таково: в начале представления есть только селектор комбинированного списка " Страна": когда пользователь выбирает страну, я отправляю форму через javascript и добавляю селектор комбинированного списка " Регион". Затем, когда пользователь установит поле со списком Region, я добавлю город...
Я решил отправить форму, потому что я не хочу терять другие значения на странице каждый раз, когда пользователь изменяет какой-либо комбинированный список, используя GET и параметр url. Однако я не хочу проверять или отображать какие-либо ошибки, пока пользователь не нажмет кнопку "Отправить".
Итак, у меня есть это
$('#id_of_the_countries_combobox').change(
function () {
$('#id_nocommit').prop('checked', true);
$('#mainform').submit();
});
Я хочу проверить, на мой взгляд, существует ли nocommit и просто пропустить проверку:
class CandidatiCreate(CreateView):
def post(self, request, *args, **kwargs):
post = request.POST.copy()
if 'nocommit' in post:
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
♯at this point form is already validated and full of errors
return self.render_to_response(
self.get_context_data(form=form))
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
Проблема: форма всегда проверяется, и в представлении отображаются ошибки.
Как я могу избежать этого? Или: это правильный способ сделать это?