Django Admin - запрет сохранения при определенных условиях и отображение сообщения пользователю - PullRequest
0 голосов
/ 10 мая 2019

Я собираю приложение Django - создал и зарегистрировал модели и формы моделей.

При добавлении или редактировании определенной записи модели мне нужно вызвать внешнюю службу для получения некоторой информации.Если информация получена успешно, я хочу обновить столбец этой модели, о котором пользователь ничего не знает, и сохранить модель.Если вызов не удался, мне нужно предотвратить сохранение и пользовательское сообщение вернулось.

Я попытался вызвать исключения, вернуть сообщения в виде строки и т. Д., Но, похоже, ничего не работает.Хотя я могу остановить сохранение, я получаю трассировку стека, если не возвращаю модель.

Я видел различные решения, использующие метод или сигналы clean (), но ни одно из них не подходитнужно.

Порядок вещей, которые мне нужно выполнить:

  1. Проверка вводимых данных формы (происходит автоматически)

  2. Вызовите API для внешней службы для получения информации

  3. Присвойте информацию реквизиту модели и сохраните модель

  4. Если APIсбой вызова, отмена сохранения () и отображение сообщения пользователю, сообщающего ему, что сохранение не удалось, и причина почему.Если сохранение не удается, страница должна перезагрузиться и не быть перенаправлена ​​на страницу со списком.

Я просто не могу найти простое решение там - любая помощь приветствуется!

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете перезаписать save_model для ModelAdmin.

  class MyAdminView(admin.ModelAdmin):
       def save_model(self, request, obj, form, change):
           super(MyAdminView, self).save_model(request, obj, form, change)
...