Трясогузка: проверка модельных отношенийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Трясогузка: проверка модельных отношений

Сообщение Anonymous »

У меня есть тип страницы, для которого я хочу автоматически определить заголовок (и фрагмент) на основе некоторых других полей и отношений модели более высокого уровня.
Чтобы добиться этого, я переопределяю функцию full_clean() метод моего класса страницы.
Единственное, что может пойти не так, это то, что новая страница получит пул, который уже используется среди дочерних страниц. Предполагается, что должны существовать только страницы с уникальными комбинациями полей, которые будут влиять на пул. Итак, если пользователь пытается сохранить страницу с повторяющейся комбинацией полей данных, я хочу отобразить красивое и читаемое сообщение ValidationError.
Я понимаю, что функция full_clean() Метод вызывается Multiple во время редактирования/сохранения страниц, следуя своего рода иерархическому подходу, где процедура очистки начинается с базовых вещей и доходит до отношений модели. Кажется, что ошибки ValidationError перехватываются в пользовательском интерфейсе и хорошо отображаются только тогда, когда они возникают в некоторых из более ранних вызовов функций.
Когда я вызываю ValidationError после того, как у меня есть вся информация под рукой , он не перехватывается и отображается обратная трассировка. Есть ли способ обеспечить правильную обработку ошибки в графическом интерфейсе?
Моя функция full_clean() в основном делает что-то вроде этого:

Код: Выделить всё

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)
Если пул не уникален среди одноуровневых элементов, super().full_clean() вызовет ValidationError, в результате чего вместо экрана трассировки будет показан экран хорошее сообщение графического интерфейса.
Поскольку мне нужны отношения модели, я думаю, что не смогу выполнить проверку в форме и использовать метод clean() и выполните form.add_error(...). Ограничения Django использовать нельзя, поскольку они работают только на уровне базы данных, и не все мои данные взяты непосредственно из полей базы данных.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -relations
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»