【问题标题】:Django-Nonrel(mongo-backend):Model instance modification trackingDjango-Nonrel(mongo-backend):模型实例修改跟踪
【发布时间】:2012-10-23 06:01:59
【问题描述】:

我正在使用带有 mongodb 后端的 Django 非 rel 版本。我有兴趣跟踪模型实例上发生的更改,例如,如果有人创建/编辑或删除模型实例。后端数据库是 mongo,因此模型在各自的集合/数据库中具有关联的“_id”字段。

现在我想提取发生此 modif 操作的“_id”字段。我们的想法是将此“_id”字段写入另一个数据库,以便有人可以从那里获取它并知道更新了哪个对象。

我考虑过重写 Django "models.Model" 中的 save() 方法,因为我所有的模型都是从中派生的。然而,mongo“_id”字段显然不存在,因为 mongo-insert 尚未发生。

在保存操作发生在 mongo 之后,是否有可能调用伪 post-save() 方法? django/django-toolbox/pymongo可以提供这样的组合吗?

【问题讨论】:

  • 那么,您是要跟踪对象的更改还是只跟踪对象保存时的时间戳?
  • 我想跟踪修改后的对象的对象ID“_id”。这样我就可以将它发送到其他进程等,以便它知道更新了什么。没有任何特定于时间戳的东西。我的其他进程可以自行更新

标签: python django mongodb django-models django-nonrel


【解决方案1】:

在深入研究 Django 模型后,我能够解决问题。 save() 方法又调用 save_base() 方法。此方法将返回的结果(在 mongo 的情况下为 ids)保存到 self.id 中。然后可以通过覆盖模型的 save() 方法来选择这个 _id 字段

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 2012-12-08
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多