Чтобы добиться этого, я переопределяю функцию full_clean() метод моего класса страницы.
Единственное, что может пойти не так, это то, что новая страница получит пул, который уже используется среди дочерних страниц. Предполагается, что должны существовать только страницы с уникальными комбинациями полей, которые будут влиять на пул. Итак, если пользователь пытается сохранить страницу с повторяющейся комбинацией полей данных, я хочу отобразить красивое и читаемое сообщение ValidationError.
Я понимаю, что функция full_clean() Метод вызывается Multiple во время редактирования/сохранения страниц, следуя своего рода иерархическому подходу, где процедура очистки начинается с базовых вещей и доходит до отношений модели. Кажется, что ValidationErrors улавливается в пользовательском интерфейсе и хорошо отображается только тогда, когда они не возникают при предположительно последнем вызове full_clean(), сразу после нажатия кнопки сохранения. Когда я вызываю ValidationError, когда у меня есть вся информация, она не перехватывается и отображается обратная трассировка. Есть ли способ корректно обработать ValidationError, если я могу вызвать его только при последнем вызове?
Моя функция full_clean() в основном делает что-то вроде этого:< /p>
Код: Выделить всё
def full_clean(self, *args, **kwargs):
if not_all_relevant_model_data_available_yet:
return super()_full_clean(*args, **kwargs)
# in this two functions I access the model stuff I need
self.title = self.set_title()
self.slug = self.set_slug()
return super()_full_clean(*args, **kwargs)
Поскольку мне нужны отношения модели, я думаю, что не смогу выполнить проверку в форме и использовать метод clean() и выполните form.add_error(...) .
Подробнее здесь: https://stackoverflow.com/questions/790 ... ore-saving