2008-09-25 1 views
1

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

ответ

2

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

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

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

0

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

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

+0

«Данные уже в базе данных» не делают код чище. В любом случае вы хотите вытащить данные из объекта модели, вы не делаете дополнительную поездку в БД. Post_save - правильный ответ, но @Andrew Ingram имеет правильную причину. – 2008-09-30 14:16:39

Смежные вопросы