Personalización de una plantilla de administración de Django
Pregunta
Me gustaría modificar una plantilla de administración de Django.
% cat /Library/Python/2.5/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html
<fieldset class="module aligned {{ fieldset.classes }}">
{% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
{% if fieldset.description %}<div class="description">{{ fieldset.description|safe }}</div>{% endif %}
{% for line in fieldset %}
<div class="form-row{% if line.errors %} errors{% endif %} {% for field in line %}{{ field.field.name }} {% endfor %} ">
{{ line.errors }}
{% for field in line %}
<div{% if not line.fields|length_is:"1" %} class="field-box"{% endif %}>
{% if field.is_checkbox %}
{{ field.field }}{{ field.label_tag }}
{% else %}
{{ field.label_tag }}{{ field.field }}
{% endif %}
{% if field.field.field.help_text %}<p class="help">{{ field.field.field.help_text|safe }}</p>{% endif %}
</div>
{% endfor %}
</div>
{% endfor %}
</fieldset>
¿Qué tipo de objeto es el campo, y más específicamente cómo iba a obtener el nombre de un campo?
Solución
field
es una instancia de AdminField
y field.field
es una instancia de BoundField
, por lo que puede hacer referencia a los campos de nombre con:
{{ field.field.name }}
Una vez que se empieza a sumergirse profundamente en la personalización de administración, es el único lugar la documentación es muy deficiente. una vez dicho esto, el código está bien escrito y fácil de entender si se toma el tiempo para la investigación que, en mi humilde opinión.
No hay muchos archivos a fin de tomar una noche y leer a través de ellos. En su caso, me gustaría empezar con:
Otros consejos
¿Ha hecho su investigación ?
Después de eso, me gustaría empezar estudiando detenidamente el código Python que invoca a su plantilla. Me imagino que es el campo de la formas sistema
Campo Una clase que se encarga de hacer la validación, por ejemplo, un EmailField que se asegura de que sus datos es una válida dirección de correo electrónico.