Лучший способ хранения и отображения предупреждающих сообщений с помощью Django?

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

Мое текущее решение на стороне клиента

В настоящее время, на front-end стороне, это выглядит следующим образом: My current solution

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

Мое текущее решение на стороне сервера

На данный момент, на стороне back-end, я использую родительский абстрактный класс с пользовательским JSONField, отслеживающим эту информацию:

class AbstractBase(models.Model):
    warnings: dict = models.JSONField(
        default=dict,
        validators=[JSONSchemaValidator(limit_value=WARNINGS_JSON_SCHEMA)],
        ...
    )
    ...

Помимо этих нескольких строк кода, я написал несколько пользовательских методов для очистки данных, которые будут сохранены в поле. Опять же, это немного утомительно, и мне кажется, что это все усложняет... Не является ли моя потребность довольно распространенной?

Отсюда мой вопрос

Как бы вы удовлетворили эту потребность чистым и DRY способом?

Я не хочу изобретать колесо. Учитывая это, я не смог найти ни одной подходящей библиотеки или репозитория с открытым исходным кодом, решающего мою проблему. Я также рассматривал возможность разработки другого интерфейса (см. рисунок ниже), но форма Django либо действительна, либо недействительна, нет никакого промежуточного состояния. Разве не жаль? Example intermediate state

Обратите внимание, что я уже использую фреймворк сообщений Django для других целей с настройками по умолчанию storage.fallback.FallbackStorage. Я ищу параллельную систему (фреймворк или библиотеку?), которая не мешала бы моей текущей конфигурации django.contrib.messages.

Мой стек:

  • Django 4.0,
  • Python 3.10,
  • PostgreSQL 14,
  • Redis 7, но я полагаю, что здесь это не имеет значения.
Вернуться на верх