Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

866
Views
Administrador de Django: ¿Cómo personalizar el ancho de autocomplete_fields para adaptarse al contenido?

Estoy tratando de personalizar el widget representado por autocomplete_fields para un campo Modelo ForeignKey. Básicamente, el problema es que el widget es demasiado estrecho para el contenido y se divide en dos líneas dentro de la selección:

captura de pantalla del problema actual

He visto que la biblioteca JS o el complemento JQuery se llama Select2 y tiene un "desplegableAutoWidth" para que se adapte al tamaño del elemento principal que funciona, pero no tengo ni idea de cómo configurar esa opción desde admin.py desde parece que las opciones nunca se pasan en el código en django.contrib.admin.widgets.AutocompleteMixin.media:

 def media(self): extra = '' if settings.DEBUG else '.min' i18n_name = SELECT2_TRANSLATIONS.get(get_language()) i18n_file = ('admin/js/vendor/select2/i18n/%s.js' % i18n_name,) if i18n_name else () return forms.Media( js=( 'admin/js/vendor/jquery/jquery%s.js' % extra, 'admin/js/vendor/select2/select2.full%s.js' % extra, ) + i18n_file + ( 'admin/js/jquery.init.js', 'admin/js/autocomplete.js', ), css={ 'screen': ( 'admin/css/vendor/select2/select2%s.css' % extra, 'admin/css/autocomplete.css', ), }, )
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede pasar atributos data-* a select2 incluyéndolos en los attrs del widget de autocompletar. Una forma de hacerlo es inicializar el widget usted mismo mediante un formulario personalizado.

Tenga en cuenta que si también incluye el campo en autocomplete_fields , su instancia de ModelAdmin inicializará el widget y su inicialización personalizada no tendrá ningún efecto.

También tenga en cuenta que los widgets AutocompleteSelect y AutocompleteSelectMultiple requieren un par de argumentos posicionales.

Algo como esto debería funcionar:

 from django import forms from django.contrib import admin from django.contrib.admin.widgets import AutocompleteSelect class MyForm(forms.ModelForm): class Meta: widgets = { 'my_field': AutocompleteSelect( MyModel._meta.get_field('my_field').remote_field, admin.site, attrs={'data-dropdown-auto-width': 'true'} ), } class MyAdmin(admin.ModelAdmin): #autocomplete_fields = ['my_field'] form = MyForm
over 4 years ago · Santiago Trujillo Report

0

Django 3.0.9:

formularios.py

 from django import forms from django.contrib import admin from django.contrib.admin.widgets import AutocompleteSelect from .models import MyModel class MyModelForm(forms.ModelForm): class Meta: fields = ('my_field', ) widgets = { 'my_field': AutocompleteSelect( MyModel.my_field.field.remote_field, admin.site, attrs={'style': 'width: 400px'} # You can put any width you want. ), }

administrador.py

 from django.contrib import admin from .forms import MyModelForm MyModelAdmin(admin.ModelAdmin): form = MyModelForm
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!