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$
):
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:
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)