DRF - 使用 PrimaryKeyRelatedField 的可浏览界面非常慢

DRF - browsable interface very slow with PrimaryKeyRelatedField

如何使用 RelatedField 使 Django Rest Frameworks 可浏览 UI 快速?

我知道这里已经有人问过这个问题:Django REST Framework: slow browsable UI because of large related table 但答案对新版本的 DRF 不再有效

包括两个 PrimaryKeyRelatedFields 给我 5 秒以上的加载时间,删除它们让我回到 .3 以下

我试过设置 html_cutoff=100 甚至 html_cutoff=1,但似乎对加载时间没有影响。

有什么想法吗?目前在 DRF“3.3.2”

编辑:涉及的表有 12000 到 120 条记录 - 但如果能处理更大的数量就更好了

不完全是我正在寻找的答案,但目前看来 github 上已经有 activity - https://github.com/tomchristie/django-rest-framework/issues/3329 幸运的是,其中一个补丁即将合并

自 DRF 版本 3.4.4 起,可以使用 selected fields cutoffs 来限制显示的关系数。

来自 DRF 文档:

When rendered in the browsable API relational fields will default to only displaying a maximum of 1000 selectable items. If more items are present then a disabled option with "More than 1000 items…" will be displayed.

...

You can also control these globally using the settings HTML_SELECT_CUTOFF and HTML_SELECT_CUTOFF_TEXT.

这个问题与这个问题相似或重复Django REST Framework: slow browsable UI because of large related table

本质上是 N+1 问题,在 Django 的上下文中,可以通过调用 prefetch_related()select_related() 来预先加载数据来修复它QuerySet。检查这个 answare