Улучшение производительности полей Django ForeignKey в Admin

По умолчанию Django admin отображает поля ForeignKey в admin как поле выбора, перечисляя каждую запись в внешней таблице в качестве опции. В одной доступной для администратора модели я ссылаюсь на модель User как на ForeignKey, и поскольку у меня есть тысячи пользователей, Django заполняет выбор тысячами опций. Это приводит к тому, что страница администратора загружается невероятно медленно, а выбор не очень полезен, поскольку для прокрутки тысяч параметров можно найти нужное вам время.

Какой лучший способ изменить рендеринг этого поля, чтобы улучшить загрузку страницы и удобство использования? Я бы хотел, чтобы поле выбора было заменено какой-то кнопкой, чтобы запустить всплывающее окно формы поиска или текстовое поле, которое ищет ключевые слова через Ajax, чтобы найти идентификатор для конкретного пользователя, которого они хотят связать. У администратора есть что-то вроде этого встроенного, или мне придется писать это с нуля?

Ответы

Ответ 1

Вы можете использовать одно из немногих автозаполненных приложений для Django. Проверьте их на Django Packages.

Там также django-extensions, у которых ForeignKeyAutocompleteAdmin, которые соответствуют вашим потребностям довольно хорошо.

Ответ 2

Добавьте raw_id_fields к своей модели, чтобы показывать только идентификатор, а не выпадающий список.

Ответ 3

Другой вариант - добавить readonly_fields вместо raw_id_fields