Django-Nonrel(mongo-backend): отслеживание изменений экземпляра модели
Я использую не относительную версию Django с бэкэндами mongodb. Я заинтересован в отслеживании изменений, которые происходят в экземплярах модели, например, если кто-то создает / редактирует или удаляет экземпляр модели. Backend db - это mongo, поэтому у моделей есть соответствующие поля "_id" в соответствующих коллекциях /dbs.
Теперь я хочу извлечь это поле "_id", в котором выполнялась эта модифицированная операция. Идея состоит в том, чтобы записать это поле "_id" в другую базу данных, чтобы кто-то мог взять его оттуда и узнать, какой объект был обновлен.
Я думал о переопределении метода save() из Django "models.Model", так как все мои модели получены из этого. Однако поле "_id" монго там явно отсутствует, так как вставка монго еще не произошла.
Есть ли возможность использования псевдо - метода post-save(), который можно вызвать после того, как операция сохранения произошла в mongo? Может ли django/django-toolbox/pymongo предоставить такую комбинацию?
1 ответ
После глубокого изучения моделей Django я смог решить проблему. Метод save() inturn вызывает метод save_base(). Этот метод сохраняет возвращенные результаты, в случае mongo, в self.id. Это поле _id может быть выбрано путем перегрузки метода save() для модели.