Я считаю, что models.ManyToManyField
виджет администратора Django по умолчанию является громоздким в использовании. Это элемент выбора HTML, и если у вас много Объектов «другой» модели, то на самом деле найти «другие» объекты, которые вы хотите связать с «этим» объектом, непрактично. А если у вас много объектов «другой» модели, это, кажется, даже замедляет отрисовку страницы администратора.
Я знаю, что могу создать свой собственный виджет администратора и применить его к себе по своему ManyToManyFields
усмотрению, но есть ли какие-нибудь заранее созданные, которые я мог бы использовать вместо этого? Во сне я представляю себе HTML-виджет с автозаполнением для ввода текста. Практично / возможно ли это сделать в админке Django?
Спасибо.
источник
вы можете попробовать использовать необработанный идентификатор в админке. и документы django: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
если вы ищете что-то с автозаполнением, вы можете посмотреть на это как на отправную точку http://code.djangoproject.com/wiki/AutoCompleteSolutions
и, наконец, очень упрощенный встроенный пример:
models.py
admin.py:
источник
Я на самом деле не играл с ней, но нашел эту многообещающую библиотеку, на которую есть ссылки в другом месте.
Кажется, он делает именно то, что я хотел. Вместо того, чтобы загружать весь список связанных объектов (независимо от того, сколько их!) И предоставлять вам средство выбора для выбора нескольких из них, как это
filter_horizontal
происходит, он представляет окно поиска / фильтрации и использует вызовы с опережением ввода / автозаполнением для получения результатов динамически. Это отлично подходит для случая, когда у вас может быть 5000 пользователей и вы хотите выбрать 3 или 4 из них, не дожидаясь<option>
загрузки и рендеринга 5k элементов.источник
Это старый вопрос, но я хочу добавить здесь ответ для людей, которые находят его так же, как и я: это как раз то, для чего нужны встроенные администраторы Django. В частности, я использую TabularInlines с полями необработанных идентификаторов для отношений «многие ко многим», у которых слишком много вариантов.
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline
источник