Looking for django-admin Answers? Try Ask4KnowledgeBase
Looking for django-admin Keywords? Try Ask4Keywords

django-adminEmpezando con django-admin


Observaciones

Django Admin es la interfaz CRUD del marco web de Django . En su mayoría se genera automáticamente, pero se puede personalizar ampliamente. Sin embargo, debe tener en cuenta que está diseñado solo para usuarios de confianza y tiene sus límites. En cualquier caso, nunca debe dar acceso de administrador a usuarios que no sean de confianza .

Django Admin proporciona un alto nivel de personalización, pero tenga cuidado de no perder demasiados detalles de personalización. Si lo hace, es probable que sea hora de crear su propia interfaz personalizada sin Django Admin.

Recursos

Versiones

Versión Fecha de lanzamiento
1.10 2106-08-01
1.9 2015-12-01
1.8 2015-04-01
1.7 2014-09-02
1.6 2013-11-06
1.5 2013-02-26
1.4 2012-03-23
1.3 2011-03-23
1.2 2010-05-17
1.1 2009-07-29
1.0 2008-09-03

Configurar Django Admin

Todo lo que necesita para comenzar con el administrador de Django ya está configurado en el diseño de proyecto predeterminado de Django. Esto incluye:

# settings.py

# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    ...,
]

MIDDLEWARE = [
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
]

TEMPLATES = [
    {
        ...,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                ...
            ],
        },
    },
]
 

Tenga cuidado con urls.py que es ligeramente diferente en Django> = 1.9 que en versiones anteriores.

1.9
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]
 
1.9
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]
 

La versión con include todavía funcionará en Django 1.9 pero está obsoleta y se eliminará en el futuro.

Si aún no lo ha hecho, debe aplicar las migraciones base:

$ python manage.py migrate
 

Para acceder al administrador, también tienes que crear un superusuario con:

$ python manage.py createsuperuser
 

Una vez hecho esto, puede ejecutar su servidor:

$ python manage.py runserver
 

Y visite la página de administración en http://127.0.0.1:8000/admin/

Agregar un modelo a las páginas de administración

Cuando creaste tus propios Modelos en una aplicación, aún deben registrarse para que estén disponibles en las páginas de administración.

Esto se hace en el submódulo de admin . Si su aplicación se creó utilizando manage.py startapp , ya debería admin.py un archivo admin.py en su módulo de aplicación. De lo contrario crearlo.

#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel

admin.site.register(MyModel)
 

Todas las opciones están definidas en la subclase ModelAdmin. algunas opciones:

class MyCustomAdmin(admin.ModelAdmin):
    list_display = ('name','age','email')  # fields to display in the listing
    empty_value_display = '-empty-'        # display value when empty 
    list_filter = ('name', 'company')      # enable results filtering
    list_per_page = 25                     # number of items per page 
    ordering = ['-pub_date', 'name']       # Default results ordering

# and register it 
admin.site.register(MyModel, MyCustomAdmin)
 

Una forma más concisa de registrar un modelo es usar el decorador admin.register :

@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
    ...
 

Personalizar django User Admin Model

from django.contrib.auth.models import User    
class UserAdmin(admin.ModelAdmin):
    list_display = ('email', 'first_name', 'last_name')
    list_filter = ('is_staff', 'is_superuser')
    
admin.site.unregister(User) 
admin.site.register(User, UserAdmin)
 

Necesitamos cancelar el registro antes de registrar UserAdmin personalizado porque en django User Model Admin ya está registrado, por lo tanto, primero tenemos que cancelar el registro del User Model en nuestro admin.py y luego podemos registrar el User Model con un ModelAdmin personalizado.

Eliminar un modelo de las páginas de administrador

Django Admin viene con algunos modelos registrados de forma predeterminada. Existen algunas ocasiones en las que es posible que desee eliminar un Modelo de las páginas de administración.

Esto se hace en el submódulo de admin . Si su aplicación se creó con manage.py startapp , el archivo admin.py ya debería estar en su módulo de aplicación. De lo contrario crearlo.

#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User

admin.site.unregister(User)