0

我有以下问题:我正在使用 Django 框架。系统中的一部分(非 django)写入数据库,在 django 使用的同一数据库中。我想在保存对象时发出信号。它是一个 django 模型对象,但不是通过 django 保存的,而是直接在 mysql 数据库中。

当 django 没有保存数据库时,django 有没有办法在他的数据库中查看保存操作?

最简洁的方法是:创建一个 Api,并让保存操作通过这个 api 运行。保存信号可以是 django 默认的。(但这取决于外部的一些工作......所以不是首选的路线......对于未来的发展来说肯定是)。

另一种选择是实现 celery 并创建一个任务,该任务经常查看其中一个保存的对象是否没有后续行动.....(我想也放弃一些令人费解的问题来启动并运行它)

但可能有一个更简单的......对我来说未知?我看到了用于文件系统的 django 看门狗解决方案......而不是数据库(可能是因为 django 有这个内置......当通过 django 正确完成时)

使其复杂化:我使用 sqlite 在本地进行测试和开发....但是我可以将保存信号放入我的测试中,而无需在本地工作....只要它在 mysql 中工作,我很高兴。

4

2 回答 2

0

你可以试试这个解决方案:

  1. 创建一个包含一列“ object_id ”的新表“ django_watch ” (根据您的标准添加其他列,如“created_datetime”等);

  2. 假设您的主表是“对象”。为这个表上的 INSERT 事件添加一个mysql 触发器。

  3. 您应该在触发器中添加一个额外的插入查询,以将object_id插入到“ django_watch ”表中。

  4. 现在您可以拥有一个 cronjob 来检查新表 ' django_watch '(用于 Django 对象中的更新)并执行必要的操作。您可以延迟 1 分钟(由您决定)连续运行此 cronjob。

于 2013-01-29T15:02:23.510 回答
0

最后写了一个可以被第三方模块调用的api。我使用 c-code 将代码交付到 django 上登录到这个 api 并调用这个 api 的 GET。(使用 django rest 框架)。这个 api 只是保存对象(在 url 中给出的 id),然后从那里开始它是默认的 django。第三方唯一需要做的就是在我的代码中构建来调用 api ......

也许不是最好的解决方案,但最好的解决我的问题......

于 2013-03-04T14:33:19.403 回答