Primeros pasos con django-admin
Eliminar un modelo de las páginas de administración
Django Admin viene con algunos modelos registrados por defecto. Hay 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 admin
. Si su aplicación se creó usando manage.py startapp
, el archivo admin.py
ya debería estar en el módulo de su aplicación. De lo contrario créalo.
#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User
admin.site.unregister(User)
Configurar el administrador de Django
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.
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
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
seguirá funcionando 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 debe 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 creó sus propios Modelos en una aplicación, aún deben estar registrados para que estén disponibles en las páginas de administración.
Esto se hace en el submódulo admin
. Si su aplicación se creó utilizando manage.py startapp
, ya debería haber un archivo admin.py
en el módulo de su aplicación. De lo contrario créalo.
#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel
admin.site.register(MyModel)
Todas las opciones se definen 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 el modelo de administración de usuarios de django
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 anular el registro antes de registrar UserAdmin personalizado porque en django User Model Admin ya está registrado, por lo que primero debemos anular el registro de User Model en nuestro admin.py y luego podemos registrar User Model con Custom ModelAdmin