Есть ли сигнал или что-то похожее на «pre_select» в django? - PullRequest
0 голосов
/ 04 апреля 2011

Я создаю систему в django, и было бы очень полезно иметь сигнал, который вызывается каждый раз, когда в базе данных выполняется SQL-запрос «select».Другими словами, кто-нибудь знает, есть ли что-то вроде метода сигнала "pre_select" или "post_select"?

Я нашел сигнал "connection_created" в документации django, но не смог найти никаких подсказок о том, какиспользовать его и меньше о доступе к модели, которая его назвала.В официальной документации просто сказано, что она существует, но не приводим простой пример использования ... = /

РЕДАКТИРОВАТЬ: Connection_created просто работает, когда создается соединение (как его имя говорит), поэтому я все ещебез решения = /.

Примером того, что я хочу, было бы выполнение этих запросов для отдельных объектов:

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

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

Любая помощь приветствуется.Заранее спасибо!

1 Ответ

1 голос
/ 19 февраля 2013

С 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...
...