El administrador de Django aún no admite campos ocultos. Hay un ticket abierto para eso: https://code.djangoproject.com/ticket/11277
Sin embargo, hay soluciones que no requieren jQuery. Los formularios de administración se representan usando admin/includes/fieldset.html
. Si anula esta plantilla, se puede inyectar una clase CSS para indicar la fila para ocultar:
<div class="form-row
{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}
{% for field in line %} {{ field.field.name }}
{% if field.field.is_hidden %} has-hidden-field{% endif %} # add this part
{% endfor %}">
esto es en realidad una sola línea en el archivo, he ampliado para que sea más legible.
(detalle aseado: durante objetos StackedInline/TabularInline, puede especificar la plantilla como variable en el código Python.)
A continuación, puede ocultar que la fila de la CSS:
.form-row.has-hidden-field {
display: none;
}
que se puede cargar a través de su página de administración:
{% block extrastyle %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}mysite/admin.css" />{% endblock %}
o mediante el uso de la definición de medios en el modeladmin:
class Media:
css = {'all': ('mysite/admin.css',)
No, quizás no me entienda. El método excluye no crear un campo oculto, lo excluye del formulario y no lo muestra en la página de salida (en plantilla) – gigimon