Está en la página 1de 7

Personalizar el administrador de Django

Django te permite habilitar un administrador para tu aplicacin. Este por defecto viene
configurado de una forma muy sencilla; no quiere decir que no sea poderoso, pero
Django te da la posibilidad de configurarlo a tu gusto y hacer el administrador mucho
ms pro de lo que ya es por defecto. Lo mejor de todo es que activar estos poderes
etra es solo cuestin de conocer las propiedades y saber en dnde son !tiles. "c
puedes documentarte ms acerca del "dmin de Django.

#ota$ si no tienes los datos para entrar al administrador no desesperes. %on manage.py
puedes crear un s!per usuario para acceder al administrador.

En la consola escribes$
& python manage.py createsuperuser
' si olvidaste la clave$
& python manage.py changepass(ord )usuario)
*odificar los administradores de tus modelos
%uando habilitas el administrador los administradores de tus modelos se ven as+$
" partir de funciones y propiedades puedes hacer que esos administradores sean
mucho ms espec+ficos y con ms funcionalidades; adems podrs ofrecerle a tu cliente
un administrador mucho ms personali,ado y claro para -l.
En admin.py creas una clase que hereda de *odel"dmin que va a ser el administrador
de la vista del modelo que quieras personali,ar$

class modelo"dmin.admin.*odel"dmin/$
En esta clase se especificarn los poderes que quieres que tenga el administrador de tu
modelo, ya sean propiedades, funciones, acciones, etc. %uando termines de modificar
el *odel"dmin de tu modelo solo debes pasrselo como parmetro al register.

admin.site.register.modelo, modelo"dmin/
0 List)Display$ esta propiedad te ayuda a que la informacin de tu modelo sea mucho
ms clara, ya que te da la posibilidad de mostrarla como si fuera una tabla; solo debes
pasarle los campos de tu modelo que quieres que muestre$
class modelo"dmin.admin.*odel"dmin/$
list)display 1 .2titulo2, 2enlace2, 2categoria2/
List)Display no solo acepta campos, tambi-n acepta funciones$

3sar funciones en el List)Display
4. En models.py creas la funcin que quieres que haga dentro del modelo; lo que hagan
las funciones est directamente relacionado con lo que t! necesitas, solo depende de tu
imaginacin.

Ejemplo$
5e quiere mostrar cuando un enlace es popular a partir de los votos positivos$

class Enlace.models.*odel/$
def es)popular.self/$
return self.votos 6 47
Esta funcin te devuelve un valor booleano .8rue 9 :alse/. ;ara que en el administrador
se vea ms claro Django por defecto muestra los booleanos con imgenes, slo le
debes activar la propiedad$

es)popular.boolean 1 8rue
<. En los campos de list)display pones la funcin$

class Enlace"dmin.admin.*odel"dmin/$
list)display 1 .2titulo2, 2enlace2, 2categoria2, 2es)popular2/

=Listo> en ms o menos seis l+neas de cdigo tienes un administrador de tu modelo
mucho ms llamativo y claro. Los campos en el list)display tienen por defecto la funcin
de organi,arse, pero cuando el campo es el resultado de una funcin no tiene esta
caracter+stica, entonces puedes activarle la propiedad a la funcin con
admin)order)field y el atributo por el que lo quieras organi,ar.
Ejemplo$
es)popular.admin)order)field 1 2votos2
0 List):ilter, como su nombre lo dice, sirve para filtrar tus datos de acuerdo a lo que
necesites, al igual que en list)display agregas los campos con los que quieres filtrar.

%lass modelo"dmin.admin.*odel"dmin/$
list)filter 1 .2categoria2, 2usuario2/
0 ?racias a search)fields le puedes pasar a tu *odel"dmin los campos donde quieres
que busque.
#ota$ cuando los campos pertenecen a otros modelos los debes poner
*odelo"l@ue;ertenece))%ampo A B )) $ 5on < ) unidos ) ) C.
Ejemplo$
search)fields 1 .2categoria))titulo2, 2usuario))email2, 2titulo2/
0 %on List)Editabl permites que tus campos sean editables desde tu *odel"dmin sin
tener que entrar a la vista de modificacin. 5olo debes poner los campos que quieras
que sean editables. Debes tener en cuenta que esos campos tambi-n est-n en el
List)Display$

class EnlaceDe"dmin.admin.*odel"dmin/$
list)editable 1 .2titulo2, 2enlace2, 2categoria2/
#ota$ no puedes poner editables todos los campos de tu List)Display ya que uno de
estos debe ser el linD del objeto; por defecto el primer campo del list)display es el que
tiene el linD.
0 List)Display)LinDs te permite cambiar el elemento linD que se configura por defecto;
debes pasar el nuevo campo del list)display que quieres que sea el linD al objeto$
list)display)linDs 1 .2es)popular2,/
3na ve, ms Django demuestra su simplicidad que hace tu trabajo como bacDend sea
mucho ms sencillo$
0 Ea()Fd):ields$ esta propiedad te ayuda a acelerar la pgina del administrador cuando
hay muchos modelos asociados con demasiados registros. Es decir, en el caso de los
enlaces, estos estn asociados a un modelo categor+as que Django por defecto pone en
un lista. #o hay problema cuando son pocas; pero si, por ejemplo, fueran mil, tenerlas
en esa lista ya no ser+a muy buena idea.
0 %on ra()id)fields desapareces la lista y te queda como un campo de teto en donde
pones el +ndice de la categor+a, pero como Django quiere hacer tu vida ms feli, te
agrega un minibuscador para que puedas navegar por las categor+as y que todo sea
mucho ms cmodo.
ra()id)fields 1 .2categoria2/
0 %on las propiedades :ilter)Gori,ontal H :ilter)Iertical puedes usar un filtro ya sea
hori,ontal o vertical; sirve mucho cuando tienes que asociar a un modelo varios objetos.
5in este filter tendr+as que asociarlos uno a uno.
;asas de esto$
"$
0 "l usar FnLines puedes administrar modelos relacionados. 8ambi-n hacer inception de
los *odels"dmin que estn relacionados, es decir dentro del *odel"dmin de uno
puedes acceder al *odel"dmin del modelo que tenga relacionado, sin tener que
cambiar de administrador; teniendo en cuenta que Django por *odel"dmin maneja un
solo FnLine.
4. En admin.py creas la clase del modelo que va a estar en el inline, esta clase hereda
de 5tacDinline; adentro de la clase especificas el modelo y la cantidad de stacDinlines
que quieres que carguen por defecto.
Ejemplo$
class EnlaceFnline.admin.5tacDedFnline/$
model 1 Enlace
etra 1 4
<. Le asocias el modeloFnline al *odel"dmin que lo va a usar con inline 1
BmodeloFnlineC. Eecuerda que los inlines se usan entre modelos relacionados.
Ejemplo$
class %ategoria"dmin.admin.*odel"dmin/$
inlines 1 BEnlaceFnlineC
' listo =magia Django> desde categor+as puedes agregar enlaces a una categor+a sin
tener que ir hasta enlaces y asociarlos.
0 En el administrador de Django estn disponibles acciones .actions/ que son funciones
simples que consiguen llamar con una lista de los objetos seleccionados en la pgina de
lista de cambios. La accin por defecto es seleccionar uno o varios elementos y
eliminarlos. " veces necesitars Jseleccionar un objeto y hacer algoJ pero hacerlo uno
por uno no es muy cmodo. Django te permite crear y registrar tus propias acciones.
4. %reas un archivo donde vas a programar la accin .actions.py/ y lo guardas en tu
proyecto; a la funcin le asocias una descripcin con short)description.
Ejemplo$
eport)as)csv.short)description 1 JEportar como %5IJ
<. En admin.py importas las acciones para que las puedas usar y luego le asocias la
accin al *odel"dmin en donde la necesites.
Ejemplo$
class Enlace"dmin.admin.*odel"dmin/$
actions 1 Beport)as)csvC
=Listo> "hora en las acciones del *odel"dmin va a aparecer la accin que creaste.