Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
¿Hay alguna manera de hacer que un formulario sea dinámico en Django?

Estoy tratando de hacer una lista desplegable dinámica en el Panel de administración. Debería mostrar todos los campos de un determinado modelo.

Aquí está el fragmento de mi código:

 JS_FUNCTION = """ obj = document.getElementById('id_field_name'); for (let i = 0, len = test.length; i < len; i++) { var opt = document.createElement('option'); opt.value = test[i]; opt.innerHTML = test[i]; obj.appendChild(opt); } """ def set_queryset(value): # model = SyncModel.objects.get(id=value) # return model.get_fields() return ["a", "b", "c", "d"] class WhitelistForm(forms.ModelForm): sync_model = forms.ModelChoiceField( queryset=SyncModel.objects.all(), widget=forms.Select( attrs={ "onchange": f'console.log(value); var test = {set_queryset("value")}; {JS_FUNCTION}', "required": True, } ), ) field_name = forms.ChoiceField( choices=(), ) class Meta: model = WhitelistModel fields = "__all__"

El problema es que necesito devolver los campos del modelo. Sin embargo, cuando paso el 'valor' como parámetro para la función python, no envía la identificación que está impresa en el console.log .

Salida de registro de la consola: ingrese la descripción de la imagen aquí

Me gustaría saber si hay una forma de hacer que el modelo sea dinámico solo en el archivo de formulario.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una forma de lograr su objetivo es escribir una función que devuelva los nombres de los campos en su modelo, con los valores deseados para las opciones. Podría usar un forms.ChoiceField y establecer choices=getFields() . Recuerde que las opciones toman una tupla de tuplas, por lo que eso es lo que debe devolver desde getFields() .

 from app.model import myModel def getFields(): all_fields = myModel._meta.fields *Do something to extract the names in the format you want* *Create a list of vals to zip to the names* data = tuple(zip(vals, all_fields)) return data
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda