How to force Django Admin to use select_related?

前端 未结 5 1470
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-24 06:52

One of my models is particularily complex. When I try to edit it in Django Admin it performs 1042 queries and takes over 9 seconds to process.

I know I can replace a

5条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-24 07:16

    Although dr jimbob's answer makes sense, for my needs, I was able to simply override the get_queryset() method with a one-liner, even selecting a foreign key's foreign key. Maybe this could be helpful to someone.

    class MyModelAdmin(admin.ModelAdmin):
        model = MyModel
        ...
        def get_queryset(self, request):
            return super(MyModelAdmin, self).get_queryset(request).select_related(
                'foreign_key1', 'foreign_key2__fk2_foreign_key')
    

提交回复
热议问题