Primeros pasos con django-admin

Eliminar un modelo de las páginas de administración

Django Admin viene con algunos modelos registrados por defecto. Hay algunas ocasiones en las que es posible que desee eliminar un modelo de las páginas de administración.

Esto se hace en el submódulo admin. Si su aplicación se creó usando manage.py startapp, el archivo admin.py ya debería estar en el módulo de su aplicación. De lo contrario créalo.

#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User

admin.site.unregister(User)

Configurar el administrador de Django

Todo lo que necesita para comenzar con el administrador de Django ya está configurado en el diseño de proyecto predeterminado de Django. Esto incluye:

# settings.py

# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    ...,
]

MIDDLEWARE = [
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
]

TEMPLATES = [
    {
        ...,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                ...
            ],
        },
    },
]

Tenga cuidado con urls.py que es ligeramente diferente en Django >= 1.9 que en versiones anteriores.

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

La versión con include seguirá funcionando en Django 1.9, pero está obsoleta y se eliminará en el futuro.

Si aún no lo ha hecho, debe aplicar las migraciones base:

$ python manage.py migrate

Para acceder al administrador, también debe crear un superusuario con:

$ python manage.py createsuperuser

Una vez hecho esto, puede ejecutar su servidor:

$ python manage.py runserver

Y visite la página de administración en http://127.0.0.1:8000/admin/

Agregar un modelo a las páginas de administración

Cuando creó sus propios Modelos en una aplicación, aún deben estar registrados para que estén disponibles en las páginas de administración.

Esto se hace en el submódulo admin. Si su aplicación se creó utilizando manage.py startapp, ya debería haber un archivo admin.py en el módulo de su aplicación. De lo contrario créalo.

#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel

admin.site.register(MyModel)

Todas las opciones se definen en la subclase ModelAdmin. algunas opciones:

class MyCustomAdmin(admin.ModelAdmin):
    list_display = ('name','age','email')  # fields to display in the listing
    empty_value_display = '-empty-'        # display value when empty 
    list_filter = ('name', 'company')      # enable results filtering
    list_per_page = 25                     # number of items per page 
    ordering = ['-pub_date', 'name']       # Default results ordering

# and register it 
admin.site.register(MyModel, MyCustomAdmin)

Una forma más concisa de registrar un modelo es usar el decorador admin.register:

@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
    ...

Personalizar el modelo de administración de usuarios de django

from django.contrib.auth.models import User    
class UserAdmin(admin.ModelAdmin):
    list_display = ('email', 'first_name', 'last_name')
    list_filter = ('is_staff', 'is_superuser')
    
admin.site.unregister(User) 
admin.site.register(User, UserAdmin)

Necesitamos anular el registro antes de registrar UserAdmin personalizado porque en django User Model Admin ya está registrado, por lo que primero debemos anular el registro de User Model en nuestro admin.py y luego podemos registrar User Model con Custom ModelAdmin