DRF - интерфейс, доступный для просмотра, очень медленный с PrimaryKeyRelatedField

Как я могу сделать браузерный интерфейс Django Rest Frameworks с RelatedField быстрым?

Я знаю, что это уже задавалось здесь: Django REST Framework: медленный интерфейс с возможностью просмотра из-за большой связанной таблицы, но ответ больше не действителен для новых версий DRF

Включение двух PrimaryKeyRelatedFields дает мне время загрузки 5 с +, удаление их возвращает меня к уровню ниже.3

Я пытался установить html_cutoff=100 или даже html_cutoff=1но, похоже, нет никакой разницы во времени загрузки.

Есть идеи? в настоящее время на DRF '3.3.2'

Редактировать: таблицы имеют от 12000 до 120 записей - но было бы здорово обрабатывать гораздо большие суммы

2 ответа

С версии DRF 3.4.4можно ограничить количество отображаемых отношений, используя выбранные поля обрезки.

Из документации DRF:

При рендеринге в доступных для просмотра реляционных полях API по умолчанию будет отображаться не более 1000 выбираемых элементов. Если присутствует больше элементов, то будет отображаться отключенная опция "Более 1000 элементов…".

...

Вы также можете управлять ими глобально, используя настройки HTML_SELECT_CUTOFF и HTML_SELECT_CUTOFF_TEXT.

Этот вопрос похож или дублирует этот Django REST Framework: медленный интерфейс с возможностью просмотра из-за большой связанной таблицы.

По сути, это проблема N+1, и в контексте Django это может быть исправлено путем активной загрузки данных путем вызова prefetch_related() или же select_related() на QuerySet, Проверьте это answare

Не совсем тот ответ, который я ищу, но в настоящее время похоже, что уже есть активность на github - https://github.com/tomchristie/django-rest-framework/issues/3329 с небольшой удачей, одна из тех патчи скоро будут объединены

Другие вопросы по тегам