Personnalisation d'un modèle d'administration de Django
Question
Je souhaite modifier un modèle d'administration dans 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>
Quel genre d'objet est le terrain, et plus précisément comment pourrais-je obtenir le nom d'un champ?
La solution
field
est une instance de AdminField
et field.field
est une instance de BoundField
, de sorte que vous pouvez référencer les champs nom avec:
{{ field.field.name }}
Une fois que vous commencez à plonger profondément dans la personnalisation d'administration, le seul endroit de la documentation est vraiment défaut. Cela étant dit, le code est bien écrit et facile à comprendre si vous prenez le temps de la recherche elle, à mon humble avis.
Il n'y a pas beaucoup de fichiers prennent donc une soirée et de lire à travers eux. Dans votre cas, je voudrais commencer par:
Autres conseils
Avez-vous fait votre recherche ?
Après cela, je commencerais penché sur le code python qui appelle votre modèle. Je suppose que le terrain est du système des formulaires
Champ Une classe qui est responsable de faire la validation, par exemple un EmailField qui fait que ses données est valide Adresse e-mail.