Как сохранить новые записи базы данных Django в JSON? - PullRequest
0 голосов
/ 22 марта 2019

В репозитории git для моего приложения Django есть несколько файлов .tsv, которые содержат начальные записи для заполнения базы данных моего приложения. Во время настройки приложения эти элементы импортируются в базу данных приложения SQLite. База данных SQLite не хранится в git-репозитории приложения.

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

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

Я знаю, что вы можете использовать команду manage.py dumpdata для выгрузки всей базы данных в JSON, но мне не нужна база данных вся , я просто хочу JSON для новых записей конкретных таблиц / моделей базы данных ,

Я думал, что мог бы попытаться взломать метод save на модели, чтобы попытаться записать JSON-представление элемента в файл, но я не уверен, идеально ли это.

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 22 марта 2019

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

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

Я рекомендую использовать что-то вроде celery для запуска функции в фоновом режиме, отделенной от всехиз ваших функций Джанго.Например, вы можете вызывать его при каждом обновлении данных или каждый час и редактировать файл резервной копии.Вы даже можете создать таблицу для мониторинга процесса обновления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...