Administrador de Django: rediseño y personalización

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.

modelos.py

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 por defecto de Django

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)

Se cambió el orden de los campos.

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)

Modelo de películas que muestra el filtro y la búsqueda

Modelo de clientes que muestra la búsqueda y el filtro

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)

título y año de lanzamiento Fields in Movie Model

campos de nombre, apellido y número de teléfono en el modelo de cliente

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)

El número de teléfono se puede editar aquí en Clase de cliente

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.

plantillas—->admin—->base_site.html

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 %}

Se cambia el encabezado 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *