Gestión del Fichero admin.py en Django

Django ofrece una herramienta increíblemente potente para la administración de modelos: el fichero admin.py. Este componente te permite crear una interfaz de gestión administrativa robusta y personalizable con muy poco esfuerzo.

Paso a Paso: Configuración del admin.py


1Crear un Modelo

Primero, definamos un modelo de ejemplo en models.py:

python
from django.db import models

class Producto(models.Model):
  nombre = models.CharField(max_length=100)
  descripcion = models.TextField()
  precio = models.DecimalField(max_digits=10, decimal_places=2)

  def __str__(self):
      return self.nombre

2Registrar el Modelo en admin.py

En el archivo admin.py de tu aplicación, debes registrar el modelo para que aparezca en la interfaz de administración de Django. Esto permite gestionar los datos del modelo directamente desde el panel de administración.

python
from django.contrib import admin
from .models import Producto

@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
  # Personalizaciones del admin irán aquí
  pass

Personalizaciones Avanzadas del Admin


Configuración de Listado

Configura cómo se mostrarán los modelos en el panel de administración de Django, permitiendo personalizar las columnas, filtros y opciones de búsqueda.

python
@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
  # Columnas mostradas en el listado
  list_display = ('nombre', 'precio')
  
  # Filtros
  list_filter = ('nombre',)
  
  # Búsqueda
  search_fields = ('nombre', 'descripcion')

Agrupación de Campos

Organiza los campos de un modelo en el panel de administración de Django en secciones o grupos para una mejor visualización y gestión.

python
@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
  fieldsets = (
      ('Información Básica', {
          'fields': ('nombre', 'descripcion')
      }),
      ('Detalles Financieros', {
          'fields': ('precio',)
      })
  )

Modelos Relacionados (Inline)

Permite mostrar y gestionar modelos relacionados directamente en el formulario de administración de otro modelo, facilitando la edición de relaciones como las de Categoría y Producto.

python
class CategoriaInline(admin.TabularInline):
  model = Categoria
  extra = 1

@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
  inlines = [CategoriaInline]
  Conclusión

El fichero admin.py de Django es mucho más que una herramienta básica de administración. Con las personalizaciones correctas, puedes crear interfaces de gestión profesionales y eficientes con muy poco código.