Администратор Django: измените выбранное поле связанных полей на автозаполнение

У нас есть некоторые модели, в которых пользователь является внешним ключом. Но с примерно 25 000 пользователей в нашей системе немного сложно найти того, кто нам нужен.

Есть ли решение, которое лучше, чем окно выбора? Может быть, автозаполнение, чтобы мы могли начать вводить имя пользователя/адрес? Или просто окно поиска? При переключении связанного пользователя для этих объектов становится все труднее и труднее с 25000 несортированных пользователей.

Было бы полезно даже просто настроить его для сортировки пользователей по имени пользователя.


person Brenden    schedule 20.03.2012    source источник
comment
Это кажется горячим: github.com/yourlabs/django-autocomplete-light   -  person Paolo    schedule 28.01.2013


Ответы (5)


У меня была эта проблема, и я решил вместо этого использовать поле автозаполнения. В большинстве случаев это работает очень хорошо. Единственная проблема заключается в том, что у вас много записей, которые в основном одинаковы. Например, в вашем случае, если вы введете Роберт в качестве имени, а в списке будет несколько сотен записей Роберт...

ОБНОВЛЕНИЕ

Как упоминается в ответе shuckc, администратор Django 2.0+ как сейчас встроено автозаполнение.

Для старых версий Django или для использования вне администратора (старый ответ)

Есть много приложений, которые добавляют автозаполнение в админку Django:

Мой любимый - последний. Он хорошо написан, его можно использовать с админом и вне админа, он работает с ManyToManyFields, ForeignKeyFields, CharFields и т.д.

Я сделал форк этого проекта для своего клиента, который добавляет некоторые тонкости, такие как поиск (лупа ) как кнопка ForeignKeyRawIdWidget.

person Etienne    schedule 21.03.2012
comment
Прекрасно .. Спасибо - person CrazyGeek; 10.11.2017

Администратор Django 2.0 имеет встроенное автозаполнение, просто установите поле autocomplete_fields в классе ModelAdmin. например

class QuestionAdmin(admin.ModelAdmin):
    ordering = ['date_created']
    search_fields = ['question_text']

class ChoiceAdmin(admin.ModelAdmin):
    autocomplete_fields = ['question']
person shuckc    schedule 02.02.2018
comment
Мне было интересно, знает ли кто-нибудь, доступно ли автозаполнение администратора для пользователя в наших собственных представлениях, если код уже встроен в Django 2. Если нет, то что люди используют. - person alj; 20.02.2019
comment
Было бы здорово найти способ использовать автозаполнение администратора вне администратора. Может ли кто-нибудь указать на возможный вариант использования? - person user12379095; 01.01.2020

Самое простое готовое решение — добавить поле в ваш ModelAdmin файл raw_id_fields -- тогда вы получите всплывающее окно, в котором вы можете использовать встроенные средства управления поиском/фильтрацией и разбиением на страницы, чтобы найти и выбрать нужный объект. повторно после.

Если вы действительно хотите автозаполнение, другие ответы дают вам разумную отправную точку.

person DrMeers    schedule 23.03.2012
comment
Если вы используете старую версию Django, в которой нет хорошо поддерживаемых пакетов автозаполнения - в этом случае это должен быть ваш любимый ответ - person pymen; 03.12.2020

Вы можете использовать ForeignKeyRawIdWidget из django.contrib.admin.widgets . Он отображает отношения FK как ввод с небольшой кнопкой рядом, которая представляет всплывающее окно с возможностью поиска.

person Timmy O'Mahony    schedule 20.03.2012

Для этого есть приложение (django-autocomplete).

person Martin Thurau    schedule 20.03.2012