Django admin выпадающий список 1000 пользователей


Гипотетически: у меня есть модель под названием Car, которая относится к одному пользователю. Мое беспокойство заключается в дефолт админке Django. Я назначаю пользователю автомобиль через выпадающее меню (это поведение Django по умолчанию, так мне сказали).

Что происходит, когда у меня есть 1000+ пользователей, чтобы выбрать из выпадающего списка. Справляется ли с этим администратор, если да, то как?

3 5

3 ответа:

Пользовательский интерфейс администратора по умолчанию отображает выпадающий список. Используйте опцию raw_id_fields, чтобы получить всплывающее окно с помощью кнопки поиска. Это окно позволяет найти и выбрать Связанный объект. Смотрите документацию: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

По умолчанию администратор Django использует интерфейс select-box () для поля, которые являются чужеродными. Иногда вы не хотите навлечь на себя накладные расходы на то, чтобы выбрать все связанные экземпляры для отображения в выпадающий список.

Вы можете посмотреть в django-grappelli, которое является приложением, которое улучшает интерфейс администратора. Документация описывает автозаполнение для отношений ForeignKey или ManyToMany, используя raw_id_fields.

Вы можете использовать плагин django-select2 https://github.com/applegrew/django-select2 .

Вы можете сделать что-то вроде:

from django_select2 import AutoModelSelect2Field

class CategoryChoices(AutoModelSelect2Field):
    queryset = models.Category.objects
    search_fields = ['name__icontains', 'code__icontains']

class NewsAdminForm(forms.ModelForm):
    category = CategoryChoices()

    class Meta:
        model = models.News
        exclude = ()

# register in admin
class NewsAdmin(admin.ModelAdmin):
    form = NewsAdminForm
admin.site.register(News, NewsAdmin)