Skip to content

Administración de Modelos

El marco Django viene con un sistema de administración incorporado para sus modelos de datos. Con muy poco esfuerzo, puede configurar listas que se pueden filtrar, buscar y clasificar para explorar sus modelos, y puede configurar formularios para agregar y administrar datos

Requisitos Previos

Primero verificar que en el archivo sitealmacen/sitealmacen/settings.py dentro de INSTALLED_APPS, se encuentre la librería 'django.contrib.admin',

Crear Super Usuario:

En la terminal de VS Code, en la carpeta de aplicación y recordar tener activa el ambiente virtual del proyecto ((.venv) ubuntu@PortatlJQ:~/appsweb/clasesdlloweb/backdjango/2022iisem/sitealmacen$):

python3 manage.py createsuperuser

Una vez ingresado esto en la terminal solicitaría:

Nombre de usuario (leave blank to use 'ubuntu'): administrador

Dirección de correo electrónico: admin\@gmail.com

Password:

Password (again):

Esta contraseña es demasiado común.

Esta contraseña es completamente numérica.

Bypass password validation and create user anyway? [y/N]: y

Responder a cada interrogante

Registrando los Modelos

Primero se registra en cada Aplicación (Clientes, Productos y Ventas) en el archivo admin.py de cada aplicación, es decir:

Apps/clientes/admin.py

Apps/productos/admin.py

Apps/ventas/admin.py

Registrando el Modelo Clientes

Apps/clientes/admin.py

from django.contrib import admin
from Apps.clientes.models import Cliente

# Register your models here.

class ClienteAdmin(admin.ModelAdmin):
    pass


admin.site.register(Cliente, ClienteAdmin)

Registrando el Modelo Productos

Apps/productos/admin.py

from django.contrib import admin
from Apps.productos.models import Producto, TipoProducto
# Register your models here.

class ClienteAdmin(admin.ModelAdmin):
    pass

admin.site.register(TipoProducto)
admin.site.register(Producto, ClienteAdmin)

Registrando el Modelo Ventas

Apps/ventas/admin.py

import imp
from django.contrib import admin
from Apps.ventas.models import Venta, VentaProducto

# Register your models here.


class MembershipInline(admin.TabularInline):
    model = VentaProducto
    extra = 1

class ProductoAdmin(admin.ModelAdmin):
    inlines = (MembershipInline,)

class VentaAdmin(admin.ModelAdmin):
    inlines = (MembershipInline,)



admin.site.register(Venta, VentaAdmin)

Personalizar Administración de Clientes

Cuando presionamos en la opción de administración y presionamos click sobre clientes, nos parece solo lo siguiente:

Esto me representa el objeto de clientes y solo muestra el nombre, dado que es lo que se le indicó en el modelo de Cliente, mediante el método:

def __str__(self):

return self.nombreCliente

Es decir, cada vez que llamemos el objeto clientes, retorno el nombre del mismo.

Para cambiar y personalizar estos datos de la administración de clientes se realiza en el archivo

Apps/clientes/admin.py

from django.contrib import admin
from Apps.clientes.models import Cliente

# Register your models here.

class ClienteAdmin(admin.ModelAdmin):
    readonly_fields = ('correoCliente',) #No permite edicion de create y update
    # readonly_fields = ('created', 'updated') #No permite edicion de create y update
    list_display = ('nombreCliente', 'direccionCliente', 'telefonoCliente', 'correoCliente')
    ordering = ('nombreCliente', 'direccionCliente', 'correoCliente')  # En caso que sea una sola ordering('column',)
    #form de busqueda
    search_fields = ('nombreCliente','correoCliente') #Campo relacionado

    list_filter = ('nombreCliente', 'correoCliente','direccionCliente') # Campos relacionados


admin.site.register(Cliente, ClienteAdmin)