Django Admin中的一些视图需要很长的时间来加载。 调试Django Admin视图以查看什么是咀嚼周期的最佳方式是什么?调试缓慢的Django管理视图
回答
正如rantanplan评论说的,django debug toolbar是启动分析的最简单方法(显示在页面加载时执行的所有查询,它们的EXPLAIN,执行时间等)。你也可以看看一个问题,关于这里介绍一个缓慢的Django安装: How to profile django application with respect to execution time?
这个问题提到使用炙手可热的,这也是对Django的维基profiling django下引用。
我也在Django Admin的特定模型中看到过,如果它们的表非常非常大(数百万条记录可以做到这一点),并且表引擎是MySQL的InnoDB。我花了一段时间才弄清楚解决方法,让我的Django管理员再次为拥有100M +记录的表哼唱。根本问题最终导致在页面加载中查询费用高昂,并且在我使用ModelAdmin中的search_fields
之一时,构建的搜索查询结构也不佳。
我这里记录我所有的解决方案,让他们有一天可能会帮助有困难的同胞的Django-ER:http://craiglabenz.me/2013/06/12/how-i-made-django-admin-scale/
如果你使用Django与MySQL则是在MySQL中有内一个bug加入优化。如果您尝试在Admin.list_display
中使用外键,那么Django将在MySQL中使用非常缓慢的排序和INNER JOIN生成查询。
有两种解决方案,即:
使用Django MySQL的修复后端:https://pypi.python.org/pypi/django-mysql-fix
覆盖
get_query_set
在AdminChangeList - 删除select_related
并设置prefetch_related
领域 - 更多细节在我的其他在这里回答:https://stackoverflow.com/a/23097385/1178806
这里有一些很好的 1)您可以添加list_per_page选项,显示较少的结果:对于因ForeignKey的表有许多记录 Django admin change form load quite slow
关于列表视图慢编辑表单nswers
class EventAdmin(admin.ModelAdmin):
list_per_page = 20
2),或使用select_related():
2.1)对于django的< 1.6:
class EventAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(EventAdmin, self).queryset(request)
return qs.select_related('foreign_key_field1, foreign_key_field2, etc')
2.2)适用于Django> = 1.6:
class EventAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(EventAdmin, self).queryset(request)
return qs.select_related('foreign_key_field1, foreign_key_field2, etc')
当然,更换foreign_key_field1,和foreign_key_field2等用适当的字段名称。
- 1. 从Django调试管理
- 2. 缓慢调试Grails的
- 3. 非常缓慢的调试
- 4. 定制列表视图处理缓慢
- 5. 缓慢调用clojure代理
- 6. 没有模型的Django管理视图
- 7. 的Django如管理员列表视图
- 8. 追踪缓慢的管理DLL负载
- 9. 调试Django管理模板分辨率
- 10. 调试自定义django管理命令
- 11. 调试Django管理面板虫
- 12. Microsoft测试管理器2010中的缓慢用户界面
- 13. sql视图运行缓慢
- 14. 如何在调试时禁用Django每视图缓存?
- 15. JavaScript图片调整缓慢
- 16. 调试物理视图?
- 17. Android:缓慢的图库视图
- 18. Django管理视图根据用户
- 19. Django自定义列表视图管理
- 20. Django管理页面:空白视图
- 21. 自定义视图Django管理
- 22. 如何扩展django管理视图?
- 23. 添加视图到Django管理员
- 24. 覆盖管理视图方法 - Django
- 25. Django管理自定义列表视图
- 26. Django管理自定义视图
- 27. 活动管理员登录缓慢
- 28. Rails管理面板加载缓慢
- 29. Glassfish管理控制台缓慢加载
- 30. 管理后端极其缓慢
https://github.com/django-debug-toolbar/django-debug-toolbar#readme – rantanplan
你可以尝试添加'list_select_related = True'属性给予管理员类 – yedpodtrzitko