Personalizando um modelo de administração do Django
Pergunta
Gostaria de modificar um modelo de administração em 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>
Que tipo de objeto é campo, e mais especificamente como eu ia conseguir o nome de um campo?
Solução
field
é uma instância de AdminField
e field.field
é uma instância de BoundField
, para que possa referenciar o nome de campos com:
{{ field.field.name }}
Uma vez que você começa a mergulho profundo no personalização admin, é o único lugar a documentação é realmente falta. Dito isto, o código é bem escrito e fácil de entender se você tomar o tempo para pesquisá-lo, IMHO.
Não há muitos arquivos de modo a ter uma noite e lê-los. No seu caso, gostaria de começar com:
Outras dicas
Você feito sua pesquisa ?
Depois disso, eu iria começar debruçado sobre o código python que invoca seu modelo. Eu imagino que o campo é do formas sistema
O campo Uma classe que é responsável por fazer a validação, por exemplo, um EmailField que garante que seus dados é um válido e-mail.