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

271
Vistas
Formulario Django: formatear datos de una instancia antes de renderizar

Usando Django 1.11, uno de mis modelos es una matriz almacenada dentro de un campo django-jsonfield .

 class MyModel(models.Model) id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) core = JSONField(blank=True, null=True, default=None)

Estoy usando ModelForm en un par de vistas para crear y editar nuevas instancias. Dentro de ModelForm, tomo prestado django.contrib.postgres.forms.SimpleArrayField para analizar la entrada en el campo.

Agregar un nuevo modelo está bien, pero en la versión de edición, la matriz se rellena previamente con lo que parece la representación __str__ (por ejemplo, una matriz de 1,2,3 se convierte en ['1','2','3'] .

Estoy solucionando esto analizando la matriz en initial= para cada formulario, pero prefiero hacerlo en un solo lugar (SECO) en lugar de tener que repetirlo dentro de cada instancia de vista y formulario.

¿Hay algún gancho o método (¿quizás un widget personalizado?) que signifique que puedo hacer esto solo una vez en el formulario o en otro lugar?

Fragmento de la vista actual con enfoque hacky usando initial= :

 def edit_mymodel(id): current_instance = MyModel.objects.get(pk=id) if request.method == "GET": form = MyModelForm(instance=current_instance, initial={"core": ",".join(current_instance.core)} ) return render(request, 'network_manager/edit.html', {'form': form} )
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede anular __init__

 class MyModelForm(ModelForm) def __init__(self, *args, **kwargs): super(MyModelForm, self).__init__(*args, **kwargs) self.initial['core'] = ",".join(self.instance.core)
over 4 years ago · Santiago Trujillo 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