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.
admin.pyPrimero, definamos un modelo de ejemplo en models.py:
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 Modelo en admin.pyEn 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.
from django.contrib import admin
from .models import Producto
@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
# Personalizaciones del admin irán aquí
pass 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.
@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') 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.
@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
fieldsets = (
('Información Básica', {
'fields': ('nombre', 'descripcion')
}),
('Detalles Financieros', {
'fields': ('precio',)
})
) 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.
class CategoriaInline(admin.TabularInline):
model = Categoria
extra = 1
@admin.register(Producto)
class ProductoAdmin(admin.ModelAdmin):
inlines = [CategoriaInline] 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.