【问题标题】:Is there a signal or anything similar to a "pre_select" in django?django中是否有信号或类似于“pre_select”的东西?
【发布时间】:2011-04-04 13:50:20
【问题描述】:

我正在 django 中创建一个系统,每次对数据库执行 SQL“选择”查询时调用一个信号会非常有帮助。换句话说,有没有人知道是否有类似“pre_select”或“post_select”的信号方法?

我在 django 文档中找到了信号“connection_created”,但找不到任何关于如何使用它的线索,更不用说访问调用它的模型了。官方文档只是说它存在但没有给出简单的使用示例... =/

编辑: connection_created 仅在创建连接时起作用(如其名称所示),因此,我仍然没有解决方案 =/。

我想要的一个示例是对不同对象执行此查询:

ExampleObject1.objects.filter(attribute=somevalue)
ExampleObject2.objects.filter(attribute=somevalue)
ExampleObject3.objects.filter(attribute=somevalue)

因此,在每个查询发送到数据库之前,调用一个函数从每个人那里接收数据,以威胁数据、日志等。 我想在 django 中存在一些类似的功能,因为 django 日志系统似乎使用类似的东西。

欢迎任何帮助。提前致谢!

【问题讨论】:

  • 请提供更多关于“选择”的信息以及您要达到的目标!
  • 我编辑了它。现在可以理解了吗? ;)

标签: django django-models django-signals


【解决方案1】:

来自http://dabapps.com/blog/logging-sql-queries-django-13/

它不是信号的形式,但它可以让你跟踪所有的查询。通过提供自定义的日志处理程序,应该可以跟踪特定的选择。

import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())

#make your queries now...

【讨论】:

  • 谢谢!抱歉这么久才回答,最近实在是太忙了。 =/
猜你喜欢
  • 2013-01-13
  • 1970-01-01
  • 2017-12-08
  • 2011-12-04
  • 2011-01-07
  • 1970-01-01
  • 2013-05-24
  • 2010-10-22
相关资源
最近更新 更多