A menudo, la página de administración predeterminada de Django es excelente y es todo lo que necesitamos para nuestros proyectos, pero a veces es posible que deseemos expandir lo que puede hacer la interfaz de administración predeterminada. Tenemos muchas herramientas en Django para personalizarlo según nuestras propias necesidades y en este artículo, aprenderemos cómo personalizar la interfaz de administración y agregar múltiples funciones:
Configuremos su proyecto, agreguemos modelos en models.py y registremos sus modelos.
Ejecute los siguientes comandos –
Python manage.py makemigrations Python manage.py migrate
Ahora hemos creado los siguientes modelos. Así es como se ven en el panel de administración:
Administrador de Django: rediseño y personalización
Veamos cómo podemos agregar múltiples funciones en el panel de administración de Django. Aquí hay una lista de personalizaciones:
De forma predeterminada, el administrador mostrará los campos en la vista de detalles en el mismo orden definido en el modelo. Pero podemos cambiar eso haciendo algunas ediciones en el archivo admin.py sin ir a models.py y cambiar el orden de los diferentes campos.
Movie model: title length release_year
title=['release_year', 'title', 'length']
Movie_Model: release_year title length
administrador.py
Python
from django.contrib import admin from .models import Movie, Customer class MovieAdmin(admin.ModelAdmin): title = ['release_year', 'title', 'length'] admin.site.register(Movie, MovieAdmin) admin.site.register(Customer)
Actualmente, solo tenemos unas pocas entradas en nuestros modelos, pero ¿qué pasa si las entradas aumentan a cientos o miles debido a una mayor cantidad de usuarios? Obtener datos de una entrada en particular se volverá tedioso si nos vamos mirando cada entrada. Por lo tanto, debemos agregar una barra de búsqueda o una función de filtro para permitir el acceso fácil a las entradas.
Search by the following elements: search_fields = ['title', 'length', 'release_year'] search_fields = ['first_name', 'last_name', 'phone']
Filter by the following elements: list_filter = ['release_year'] list_filter = ['last_name']
carpeta_aplicación / admin.py
Python
from django.contrib import admin from .models import Movie, Customer class MovieAdmin(admin.ModelAdmin): # Let you to search with title name, release year and length of duration of movie search_fields = ['title', 'length', 'release_year'] # There will be a filter on release year list_filter = ['release_year'] class CustomerAdmin(admin.ModelAdmin): # Let you to search with first name, last name and phone number of the customer search_fields = ['first_name', 'last_name', 'phone'] # There will be a filter on last name list_filter = ['last_name'] admin.site.register(Movie, MovieAdmin) admin.site.register(Customer, CustomerAdmin)
En la interfaz de administración, normalmente vemos solo un campo de nuestros modelos en la vista de lista. Podemos agregar más campos para ver con list_display.
list_display=['title', 'release_year'] list_display=['first_name', 'last_name', 'phone']
administrador.py
Python
from django.contrib import admin from .models import Movie, Customer class MovieAdmin(admin.ModelAdmin): list_display =['title', 'release_year'] class customerAdmin(admin.ModelAdmin): list_display =['first_name', 'last_name', 'phone'] admin.site.register(Movie, MovieAdmin) admin.site.register(Customer, CustomerAdmin)
Puede agregar la capacidad de editar valores de atributos directamente desde la vista de lista en lugar de ir a la vista de detalles
editable_list = ['phone']
administrador.py
Python
from django.contrib import admin from .models import Movie, Customer class CustomerAdmin(admin.ModelAdmin): editable_list = ['phone'] admin.site.register(Movie) admin.site.register(Customer, CustomerAdmin)
A veces, es posible que desee cambiar el diseño y la interfaz de usuario de la interfaz de administración, para lo cual debe agregar sus propias plantillas al proyecto, que luego se reflejarán en su interfaz de administración de Django.
Cree una carpeta templates en la carpeta raíz y dentro de ella, cree otra carpeta admin. Ahora agregue su archivo html dentro de la carpeta de administración.
HTML
{% extends "admin/base.html" %} {% block title %}{% if subtitle %}{{ subtitle }} | {% endif %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %} {% block branding %} <h1 id="site-name" style="font-family: cursive;" ><a href="{% url 'admin:index' %}">Video Rental Administration</a></h1> {% endblock %} {% block nav-global %}{% endblock %}
Aquí, el encabezado en la interfaz de administración ha cambiado debido a la adición del archivo html. A veces, la plantilla no se aplica a la interfaz; para evitarlo, asegúrese de haber realizado la configuración correcta de la plantilla en el archivo settings.py.
import os TEMPLATES=[ 'DIRS': [os.path.join(BASE_DIR, 'templates')], ]
Así puede personalizar la plantilla de administración en Django según sus requisitos.
Publicación traducida automáticamente
Artículo escrito por tanujajoshi24 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA