Стиль – когда сериализовать экземпляр модели Django:сигналы против метода сохранения модели

StackOverflow https://stackoverflow.com/questions/131327

  •  02-07-2019
  •  | 
  •  

Вопрос

Я планирую сериализовать модель Django в XML при ее сохранении или обновлении.(XML будет импортирован во флэш-фильм).Лучше ли прослушать сигнал post_save() или pre_save(), а затем выполнить сериализацию или просто обработать его в методе save() модели?

Это было полезно?

Решение

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

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

post_save() обычно лучше, потому что это означает, что модель была успешно сохранена. Использование pre_save() не гарантирует, что сохранение будет успешным, поэтому его не следует использовать для чего-либо, что может зависеть от завершения сохранения.

Другие советы

Сохранение поста.Таким образом, новые данные (причина выполнения сериализации) уже находятся в базе данных.Это позволит получить гораздо более чистый фрагмент кода, который просто берёт данные из базы данных и не нужно беспокоиться о добавлении дополнительного значения.

Другой способ, который приходит на ум, — это поддерживать XML-файл параллельно с базой данных.То есть в методе save() добавьте данные в базу данных и в XML-файл.Это потребует гораздо меньше накладных расходов, если вы имеете дело с огромными таблицами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top