获取Django REST框架中的SQL查询数

jqjz2hbq  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(133)

假设

@login_required()
def GetFollowers(request, id):
    obj = Follow.objects.filter(following_id=id)
    serializer = SearchSerializer(obj, many=True)
    result = JsonResponse(serializer.data, safe=False)
    return result

使用Django REST框架当我访问一个API端点时,假设(localhost:8000/api/v1/myfollowers)我得到了一个json结果,这个结果是可以的,但是没有得到django-debug-toolbar。当我引发(Http 404)而不是返回JSON结果时,django调试工具栏是可见的。
我该怎么办?我知道的一种方法是打印查询,但我不能使用它,因为我将不得不向每个函数添加相同的行。
提前感谢!

jfewjypa

jfewjypa1#

你可以像这样使用connection.queries变量:

# from django.db import connection

@login_required()
def GetFollowers(request, id):
    print('number of DB hits (queries) at the beginning', len(connection.queries))
    obj = Follow.objects.filter(following_id=id)
    serializer = SearchSerializer(obj, many=True)
    result = JsonResponse(serializer.data, safe=False)
    print('number of DB hits (queries) at the end', len(connection.queries))
    return result

此解决方案是适用的,因为您是显式地执行查询。相反,如果你开始使用DjangoRestFramework和序列化器,让它在幕后做所有的事情,你需要找到一种不同的方法。

相关问题