jueves, 4 de abril de 2013

Tutorial Django: Crear aplicación sencilla de administración en Django

En este tutorial Django sencillo crearemos un módulo en la página de administración de Django para poder añadir coches y marcas de estos coches.


Lo primero que hacemos es crear una nueva aplicación, para ello abrimos una consola y situarnos en la carpeta de nuestro proyecto. Una vez estamos dentro lanzamos el comando:

python manage.py startapp concesionario

Nos creará una nueva aplicación llamada concesionario.

Antes de nada, nos vamos al archivo settings.py de nuestro proyecto y buscamos INSTALLED_APPS = (
añadimos nuestra aplicación, también descomentaremos la línea de la aplicación de admin:



Ahora nos vamos al archivo models.py de nuestra nueva aplicación concesionario y en él creamos dos modelos. Uno llamado Marca y otro llamado Coche. De esta manera quedará nuestro archivo models.py



from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Marca(models.Model):
    nombre=models.CharField(max_length=30)
 
    def __unicode__(self):
        return self.nombre

class Coche(models.Model):
    nombre=models.CharField(max_length=30)
    antiguedad=models.IntegerField()
    marca=models.ForeignKey(Marca)
    descripcion=models.TextField()
    responsable=models.ForeignKey(User)
 
    def __unicode__(self):
        return self.nombre


Primero hemos importado User. En Marca creamos un campo nombre y en Coche los campos nombre, antiguedad, marca (con clave foránea de Marca), descripción y responsable (clave foránea de User). 


Una vez tenemos nuestro modelo nos vamos a la consola y lanzamos el comando:

python manage.py sqlall concesionario

lazamos:

python manage.py syncdb


Como podrás comprobar nos ha creado las tablas marca y coche precedidas del nombre de nuestra aplicación. Si es la primera vez que sincronizas te pedirá que crees un usuario para poder acceder a la administración.


Para poder acceder a la administración de Django, aparte de descomentar la línea que descomentamos anteriormente en  INSTALLED_APPS también tendremos que irnos al archivo urls.py de nuestro proyecto y descomentar las siguientes lineas:



from django.contrib import admin
admin.autodiscover()

url(r'^admin/', include(admin.site.urls)),



Una vez descomentadas arrancamos nuestro servidor con el comando:

python manage.py runserver

y accedemos a la url http://localhost:8000/admin/
Nos tendrá que salir algo así:
Introducimos los datos que creamos para el usuario de la primera sincronización de la base de datos y entramos al panel de administración:
Como vemos desde aquí podemos añadir usuarios, grupos y sitios. Lo que vamos a hacer es crear un nuevo módulo para poder añadir coches con sus marcas utilizando el modelo creado anteriormente. Para ello nos vamos a neustra aplicación concesionario y creamos un archivo llamado admin.py con el siguiente contenido:



from django.contrib import admin
from models import *

class Caracteristicas(admin.ModelAdmin):
    fieldsets=(
               (None,{
                      "fields":(("nombre","antiguedad"),"marca","descripcion","responsable")
                      }),
             
               )
    list_display=["nombre","marca","antiguedad"]
    list_filter=["marca"]
    search_fields=("nombre",)
   
admin.site.register(Marca)
admin.site.register(Coche,Caracteristicas)


Actualizamos nuestra pantalla de admin:




Ahora podremos añadir marcas y coches. En el archivo admin.py de concesionario hemos añadido algunas opciones para Coches como poder filtrar por marca, buscar por nombre, listar por nombre marca y antiguedad... Con fieldsets hemos definido la estructura del formulario para que se muestren juntos los campos de nombre y antiguedad y una linea por cada campo restante. Muchas más opciones se pueden añadir consultando la configuración de Django.

No hay comentarios:

Publicar un comentario