2012-05-03 5 views
2

Я пытаюсь понять, сколько запросов на выборку SQL требуется для каждого запроса в моем приложении (Django + Tastypie). Я изменил конфигурацию ведения журнала, чтобы увидеть соответствующие журналы. По какой-то причине я вижу огромное количество этих журналов. Например, для простого get_list - я вижу ~ 100 строк. Когда я пытался отлаживать, чтобы увидеть, откуда они все, я не мог бы вступить в строки, которые генерируют эти журналы. Я также заметил, что цифры слева очень низкие (обычно 0.001). Я предполагаю, что это число - время для выполнения запроса (в секундах).Django SQL Выберите журналы - почему я вижу так много из них?

Любая идея, что объясняет все эти строки?

ответ

1

В вашем файле apash.py для tastypie вам, вероятно, потребуется изменить задание по умолчанию, чтобы либо включить prefetch_related, либо select_related. Который вы используете, зависит от вашей реальной модели. Вот пример:

class OfferResource(ModelResource): 
    user = fields.ForeignKey(UserResource, 'user', full=False) 
    country = fields.ForeignKey(CountryResource, 'country', full=True) 
    campaign = fields.ForeignKey(CampaignResource, 'campaign', full=False)  
    network = fields.ForeignKey(NetworkResource, 'network', full=False, null=True)  
    class Meta: 
     queryset = Offer.objects.prefetch_related('offerstat').select_related('country', 'campaign', 'network').all() 
+0

Спасибо. Почему вы используете prefetch_related с 'offerстатом', а select_related вместе с остальными? – Uzi

+1

Узи: «select_related» не работает для обратных отношений, тогда как «prefetch_related» делает: https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related – lamplightdev