¿Qué es Django Admin?

- Andrés Cruz

In english
¿Qué es Django Admin?

Django Admin es una aplicación que viene instalado por defecto cuando creamos un proyecto en Django, para poder emplear el mismo, necesitamos de otras aplicaciones que ya vienen con nuestro framework; como:

'account', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',

Todas estas aplicaciones las podemos ver y administrar en el archivo global de configuraciones del proyecto. Por ejemplo; para lograr la autenticación en nuestra aplicación de Django Admin empleamos la app llamada django.contrib.auth, y esto es una parte de emplear frameworks como Django, y es que podemos reutilizar componentes, módulos, aplicaciones... fácilmente e incluso el mismo framework hace lo mismo.

Acceso al panel de administración

De forma predeterminada, django usa /admin url para el panel de administración. Para acceder al panel de administración, primero debemos ejecutar nuestro proyecto.
Nota: Si no sabe cómo ejecutar el servidor o cómo crear un proyecto en Django, le recomiendo que lea mi artículo en la cual damos los primeros pasos con Django.
En primer lugar, abramos nuestro archivo urls.py. Este es el archivo que contiene enrutamiento de URL a nivel de proyecto. Cuando creamos nuevas páginas web o API, debemos agregar estas URL a urls.py para el enrutamiento.
Eche un vistazo al archivo urls.py a nivel de proyecto.

Django Urls.py
Django Urls.py


Como puede ver en la imagen de arriba, he marcado la línea 20 con un rectángulo rojo. Aquí, el primer parámetro dice cuál es nuestra URL y el segundo parámetro dice que esta URL será el panel de administración de nuestro proyecto.
Después de ejecutar nuestro servidor con éxito, abramos nuestro navegador y vayamos a este sitio web http://127.0.0.1:8000/admin
Nota: si ejecuta su proyecto en una URL diferente, no olvide cambiar esta área.

Qué nos permite exactamente Django Admin?

Django Admin nos ofrece una interfaz configurable mediante clases para poder crear procesos CRUD sencillos simplemente mediante un esquema de clases; en otras palabras, con tan solo definir una clase, algunos atributos como por ejemplo indicar, modelo, que campos queremos que sean administrables en los formularios, campos para el listado, filtros, etc; ya con esto Django Admin crea de manera automática un CRUD completo para estos campos:

Django Admin

Personalizar clases para crear los CRUD con Django Admin

from django.contrib import admin from .models import Comment # Register your models here. admin.site.register(Comment)

Y listo, en esta entrada vimos un ejemplo sencillo de cómo podemos emplear y personalizar Django Admin para nuestro proyecto, pero recuerda que puedes obtener más información de cómo puedes personalizar tus procesos CRUD mediante esta potente aplicación; puedes seguir viendo la documentación oficial o seguir mi curso de Django en el cual vemos un poco de todo con este famoso framework.

Personalizar Django Admin

Django Admin tiene un gran nivel de personalización en cómo queremos mostrar los datos, aplicar filtros, búsquedas, que datos queremos administrar, etc; para estos tenemos que definir la serie de características implementadas desde una clase como la siguiente:

# Register your models here.

class CategoryAdmin(admin.ModelAdmin):
    pass
    #caracteristicas

admin.site.register(Comment, CategoryAdmin)

Como casi todo en Django, no es más que una clase de Python que hereda de una clase interna al framework en la cual aplicamos las características; luego, la registramos mediante site.register() en la cual indicamos el modelo y la clase admin/características.

Veamos algunas características comunes que podemos aplicar.

Definir columnas para listados

Si quieres colocar columnas específicas desde el listado, basta con definir una tupla llamada list_display con las columnas que quieres mostrar:

# Register your models here.

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('id','text')

admin.site.register(Comment, CategoryAdmin)
 Establecer columnas personalizadas en el listado

Campos de búsqueda

Podemos especificar por cuales campos de nuestra tabla va a buscar el listado:

class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    search_fields = ('text', 'id')

Navegación por fechas

Justo debajo de la barra búsqueda, hay enlaces de navegación para navegar a través de una jerarquía de fechas:

class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    search_fields = ('text', 'id')
    date_hierarchy = 'date_posted'
Filtrar por fechas

Ordenado

Podemos especificar el campo de ordenación en el listado:

class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    search_fields = ('text', 'id')
    date_hierarchy = 'date_posted'
    ordering = ('date_posted',)

Filtrados

También podemos agregar filtros en el listado:

class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    search_fields = ('text', 'id')
    date_hierarchy = 'date_posted'
    ordering = ('date_posted',)
    list_filter = ('id', 'date_posted')
Filtrar por ID y fecha

Campos editables

Desde el listado, es posible que puedes modificar campos:

class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    search_fields = ('text', 'id')
    date_hierarchy = 'date_posted'
    ordering = ('date_posted',)
    list_filter = ('id', 'date_posted')
    list_editable = ('text',)
Modificar comentarios desde el listado

Indicar campos administrables

Según el modelo con el cual estés trabajando, puede que te interese definir solamente algunos campos administrables (para crear y editar):

class CommentAdmin(admin.ModelAdmin):
    // ***
    fields = ('text',)
Agregar un comentario

Excluir campos administrables

También podemos excluir los campos administrables:

class CommentAdmin(admin.ModelAdmin):
    // ***
    #fields = ('text',)
    exclude = ('text',)
Opción de exclude

Registrar clases mediante un decorador

Otra forma en la cual podemos registrar las clases, es mediante un decorador:

@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ('id','text')
    //***

Registrar el modelo para las etiquetas, categorías y elementos

Ya que vimos lo fácil que es usar Django Admin para modelos sencillos, vamos a usarlo para registrar las relaciones de categorías y tipos:

elements/admin.py

from django.contrib import admin

from .models import Type, Category

@admin.register(Type, Category)
class CategoryTypeAdmin(admin.ModelAdmin):
    list_display = ('id','title')

Y el de element:

@admin.register(Element)
class ElementAdmin(admin.ModelAdmin):
    list_display = ('id','title','category','type')
    fields = ('title','slug','description','price','category','type')

Agrupar los campos de gestión

Mediante tuplas, es posible agrupar campos de formulario para colocar en una sola línea, por ejemplo, si queremos colocar el título y el slug en una sola línea, al igual que el tipo y categoría, tenemos:

@admin.register(Element)
class ElementAdmin(admin.ModelAdmin):
    list_display = ('id','title','category','type')
    fields = (('title','slug'),'description','price',('category','type'))

Y queda como:

Agrupar campos en una sola línea
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.