正确使用setup_eager_loading

时间:2017-05-11 02:34:14

标签: python django django-views django-rest-framework

我有一个具有嵌套关系的序列化程序,其中需要获取4个额外的表,这可以在循环内部循环内创建循环,并且django ORM是惰性的。我想过使用setup_eager_loading来提高性能。

我有一个Eagerloadingmixin如下

# coding: utf-8
import pandas  
import sys
reload(sys)
sys.setdefaultencoding('gbk')


def xls2html(): 
    df = pandas.read_excel('aaa.xls',encoding='gbk')    

    df.to_html('bbb.html',bold_rows=False)       

if __name__ == '__main__':
    xls2html()

如果我没有覆盖get_queryset方法,我如何在我的APIView中使用它?

1 个答案:

答案 0 :(得分:0)

您可以在获取rents查询集时使用它:

    rents = Rental.objects.all()
    rents = self.serializer_class.setup_eager_loading(rents)

这将确保对列表视图和详细视图都使用预先加载。