Ver índice de contenidos del libro

6.1. Activar la interfaz de administración

Pensamos que la interfaz de administración es la característica más atractiva de Django — y la mayoría de Djangonautas están de acuerdo — pero como no todo el mundo lo necesita, es una pieza opcional. Esto significa que hay que dar tres pasos para activar la interfaz de administración:

1. Agrega meta-datos de administración a tus modelos.

No todos los modelos pueden (o deberían) ser editables por los usuarios administradores, por lo que necesitas "marcar" los modelos que deberían tener una interfaz de administración. Esto lo hacemos añadiendo al modelo una clase interna Admin (junto con la clase Meta, si es que hay una). Así que, para agregar una interfaz de administración a nuestro modelo Book del capítulo anterior, usamos:

class Book(models.Model):
    title = models.CharField(maxlength=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
    num_pages = models.IntegerField(blank=True, null=True)
 
    def __unicode__(self):
        return self.title
 
    class Admin:
        pass

La declaración de Admin marca la clase como poseedora de una interfaz de administración. Hay una serie de opciones que podemos incluir bajo Admin, pero por ahora vamos a limitarnos al comportamiento por defecto, así que escribimos pass para decirle a Python que la clase Admin está vacía.

Si estás siguiendo este ejemplo escribiendo tu propio código, probablemente sea buena idea agregar ahora declaraciones de Admin a las clases Publisher y Author.

  1. Instalar la aplicación admin. Esto se hace agregando "django.contrib.admin" a tus INSTALLED_APPS de tu archivo de configuración settings.py.

  2. Además, asegurate de que las aplicaciones "django.contrib.sessions", "django.contrib.auth", y "django.contrib.contenttypes" no están comentadas, ya que la aplicación admin depende de ellas. También descomenta todas las líneas de MIDDLEWARE_CLASSES configurando la tupla, y borra la definición de TEMPLATE_CONTEXT_PROCESSOR para permitir que tome los valores por defecto.

  3. Ejecuta python manage.py syncdb. Este paso instalará las tablas de la base de datos que la interfaz de administración necesita.

Nota Es probable que la primera vez que ejecutaste syncdb con "django.contrib.auth" en INSTALLED_APPS, te preguntara algo sobre crear un superusuario. Si no lo hiciste en ese momento, tendrás que ejecutar python manage.py createsuperuser para crear este usuario administrador. En caso contrario no serás capaz de identificarte para entrar a la interfaz de administración.

  1. Agrega el patrón de URL en tu urls.py. Si aún estás usando el que fue creado por startproject, el patrón de la URL de administración ya debería estar ahí, pero comentado. De cualquier forma, los patrones de URL deberían terminar siendo algo así:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
    (r'^admin/', include('django.contrib.admin.urls')),
)

Eso es todo. Ahora ejecuta python manage.py runserver para iniciar el servidor de pruebas. Verás algo como esto::

Validating models...
0 errors found.
 
Django version 1.4, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Ahora puedes visitar la URL que te brinda Django (http://127.0.0.1:8000/admin/ en el ejemplo anterior), identificarte, y jugar un poco.