sábado, 28 de agosto de 2010

Ocultando el label para los campos hidden en el admin de django

Recientemente me enfrente a una de las pocas piedras que le aparecen en el camino a los desarrolladores que usamos django. ;-)

Queria registrar un modelo en el admin de django, y definir uno de sus campos como hidden.

Para mi sorpresa el label de dicho campo no me hacia caso.
creo que resulta traumatico que un campo hidden de un formulario, le acompane inseparablemente su label no ;-)


Comence a escarbar las plantillas del admin que estuvieran implicadas (change_form.html e includes/fieldset.html) pero demasiado desbarajuste habia que armar.

Después de almuerzo se me ocurrio apoyarme en jquery momentaneamente ya que al final de todas pienso que pronto, esto tenga una solucion a lo django.

Aqui les va mi solución:


extendi la plantilla change_form.html para la aplicacion que necesitaba de la siguiente forma:

{% extends "admin/change_form.html" %}

{% block extrahead %}
{{ block.super }}
<script>
$(document).ready(function(){
$('.hidden').parent().parent().hide();
});
</script>
{% endblock %}


y en la definicion del campo hidden le agregue como atributo lo siguiente:

attr_hidden = {'class' : 'hidden'}

class AdminForm(forms.ModelForm)
hidden_field = forms.CharField(widget=HiddenInput(attr_hidden))

class Meta:
model = MyModel


para mi sigue siendo una solucion indecorosa, asi que cualquier idea, sera bienvenida.

animo djangueros!!!!!