Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda