Personalizar el Administrador Django

Hola amigos, En este artículo aprenderás cómo personalizar el administrador que ya viene estructurado por defecto en Django, el cual está enfocado a los modelos que contiene cada apps que se ha creado. Para ello crearemos un proyecto y definiremos una app llamada: 'modelo1', y en el archivo models de esta app, crearemos nuestro modelo llamado Libro y este, a su vez, contará con 3 campos, los cuales son: autor, editorial, fecha_publicación.
from django.db import models

class Libro(models.Model):
 autor = models.CharField(max_length=40)
 editor = models.CharField(max_length=30, blank=True, null=True)
 fecha_publicacion = models.DateField()
 estado = models.BooleanField()  # True = Nuevo   ,  False = En mal estado

 def __unicode__(self):
  return self.autor
Luego de definir nuestro modelo, en el archivo admin.py agregamos lo siguiente, con la finalidad de visualizar nuestro modelo  Libro en el administrador.
from django.contrib import admin
from .models import Libro

admin.site.register(Libro)
Asimismo, agregamos nuestra applicacion a la variable INSTALLED_APPS en el archivo settings.py:
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'modelo1',
)
Y también configuramos nuestra base de datos con el motor liviano de base de datos de sqlite que viene por defecto en el settings de Django.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'ejemplo.db'),
    }
}
Una vez hechas las respectivas configuraciones, sincronizamos la base de datos :
python manage.py syncdb
Y ponemos en marcha nuestro proyecto en el servidor local.
python manage.py runserver
Después, ingresamos al admin: localhost:8000/admin y entramos a nuestra app 'modelo1', le damos clic en nuestro modelo Libro y agregamos unos cuantos registros.

Luego de realizar los registros a nuestro modelo Libro, ingresamos nuevamente al admin: localhost:8000/admin y le damos clic al modelo Libro. Y como observas, se ve algo simple, pues solo nos muestra el nombre del autor.
Ahora personalizamos esta vista añadiendo filtros, búsqueda, el orden de los registros e incluso que campos mostrar. Para ello, en el archivo admin.py modificamos añadiendo lo siguiente:
class LibroAdmin(admin.ModelAdmin):
 list_display = ('autor', 'editor', 'fecha_publicacion')
 list_filter = ('editor', 'estado')
 ordering = ('fecha_publicacion',)
 search_fields = ('autor','editor',)
Como vemos, creamos una clase 'LibroAdmin' y esta clase hereda de la  clase ModelAdmin, que a su vez, es la representación de un modelo en la interfaz de administración. Por lo general, estos se almacenan en un archivo llamado admin.py en su aplicación.
Asimismo dentro de ella definimos las siguientes variables :

list_display

Este controla que columnas aparezcan en la tabla de la lista. Por defecto, la lista de cambios muestra una sola columna que contiene la representación en cadena de caracteres del objeto. Aquí se han hecho cambios para mostrar el autor, el editor y la fecha de publicación.

list_filter

Este crea una barra de filtrado del lado derecho de la lista. Aquí se ha hecho el filtro por editor y por estado.

ordering

Este controla el orden en el que los objetos son presentados en la interfaz de administración. Es simplemente una lista de campos con los cuales ordenar el resultado, anteponiendo un signo menos a un campo se obtiene el orden reverso. En este caso se ordenará por fecha de publicación.

search_fields

Este crea un campo que permite buscar texto. En este caso, buscará el texto en el campo por autor y editor.
Y ahora al acceder nuevamente al admin: localhost:8000/admin y le damos clic al modelo Libro. Ya notarás los cambios realizados.
Nota
Cabe recordar que esta variables se definen en una tupla.

0 comentarios: