В приложении создать «admin.py», где вы на самом деле зарегистрировать свою собственную модель для администратора, добавить следующий код.
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm
class MyUserCreationForm(UserCreationForm):
"""
A form that overrides the UserCreationForm
"""
class Meta:
model = User
fields = ("username", "groups")
UserAdmin.add_form = MyUserCreationForm
admin.site.register(Doctor)
Теперь вам просто нужно переопределить шаблон, который отображает эту переопределенную форму. Создайте структуру каталогов, как,
"your_project_root_directory"/templates/admin/auth/user/add_form.html
и скопировать содержимое в виде,
{% extends "admin/change_form.html" %}
{% load i18n %}
{% block after_field_sets %}
<p>{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}</p>
<fieldset class="module aligned">
<div class="form-row">
{{ form.username.errors }}
{# TODO: get required class on label_tag #}
<label for="id_username" class="required">{% trans 'Username' %}:</label> {{ form.username }}
<p class="help">{{ form.username.help_text }}</p>
</div>
<div class="form-row">
{{ form.password1.errors }}
{# TODO: get required class on label_tag #}
<label for="id_password1" class="required">{% trans 'Password' %}:</label> {{ form.password1 }}
</div>
<div class="form-row">
{{ form.password2.errors }}
{# TODO: get required class on label_tag #}
<label for="id_password2" class="required">{% trans 'Password (again)' %}:</label> {{ form.password2 }}
<p class="help">{% trans 'Enter the same password as above, for verification.' %}</p>
</div>
<div class="form-row">
{{ form.groups.errors }}
{# TODO: get required class on label_tag #}
<label for="id_groups" class="required">{% trans 'Groups' %}:</label> {{ form.groups }}
<p class="help">{% trans 'All existing Groups listed here. If you are not seeing any group, means you dont have any groups object created.' %}</p>
</div>
<script type="text/javascript">document.getElementById("id_username").focus();</script>
</fieldset>
{% endblock %}
И вы хорошо идти. Его рабочий фрагмент.
DRY - это очень хорошая практика, когда это возможно - иногда тонкая настройка требует решения против такой практики – Alvin