2009-12-03 26 views

Respuesta

39

Después de añadir y registrar su administrador:

# app/admin.py 
class YourModelAdmin(admin.ModelAdmin): 
    pass 

admin.site.register(YourModel, YourModelAdmin) 

Asegúrese de que su aplicación está en su proyecto settings.py:

# settings.py 
INSTALLED_APPS = (
    # other apps ... 
    'app', 
) 

Sincronizar su proyecto para ese modelo si no lo ha hecho ya:

python manage.py syncdb 

Reinicie su servidor, CTRL-C:

python manage.py runserver 
+0

+1 para detectar las causas más probables. –

+1

¡Es un buen resumen! ¡Soluciona el 90% del problema con modelos que no se muestran en el administrador! +1 – Laurent

+0

Para mí, 'python manage.py runserver' no funcionaba porque estaba probando usando un servidor en vivo en el puerto 80, así que tuve que ingresar el comando' sudo service apache2 restart' y actualicé los modelos que agregué recientemente al sitio web de administración. –

1

¿Ha agregado la aplicación a sus aplicaciones instaladas? Eso me ha pasado a mí una y dos veces. :) De lo contrario, nos sería útil ver el código para ayudarte.

+0

Este 1,000x !!!! Acabo de pasar 2 horas desgarrándome el pelo, pasando por 3 aplicaciones casi idénticas, una de las cuales aparecía, y otras dos que no. Sabía que el sitio de administración los había registrado, ya que el registro duplicado o no válido arrojaba errores. Cada error "principiante" que se citó en SO no estaba en cuestión. Luego enterrado profundamente en este hilo fue su comentario, y una facepalm para mí. ¡¡Muchas gracias!! – jlovison

7

En caso de duda, cierre el servidor, syncdb, inicie el servidor.

+0

Definite +1 para este comentario. Pensé que el servidor de desarrollo detectaría cualquier cambio en los archivos admin.py - no podría garantizar que 100% Reiniciar el servidor hizo una gran diferencia (de manera positiva). – tonemcd

+1

Cambios sí, pero el servidor de desarrollo no recoge archivos nuevos. – Kugel

+0

Tiendo a tener siempre mi archivo settings.py abierto y un truco rápido para reiniciar el servidor es modificar el archivo de configuración, lo que hace que el servidor Dev seleccione cualquier cambio nuevo. –

1

También asegúrese de que no haya errores de sintaxis en su admin.py o algo así. Eso puede provocar que una aplicación no se registre en AdminSite.

2

Creo que la lista de comprobación en la respuesta de Thierry es casi definitiva, pero asegúrese de que urls.py contiene admin.autodiscover() para cargar INSTALLED_APPS módulos admin.py.

# urls.py 
from django.conf.urls.defaults import * 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 
    ('^admin/', include(admin.site.urls)), 
) 

Más información en el django docs.

+3

A partir de Django 1.7, 'admin.autodiscover()' [ya no es necesario] (https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#discovery-of-admin-files) – Alasdair

4

Tengo la experiencia, que a veces después de cambiar un admin.py el dev-servidor no se reiniciará. en ese caso, touch settings.py ayuda.

+1

+1 buen truco –

0

comentario cabo las algunas líneas en urls.py ver documentos para más detalles

admin.autodiscover() 

urlpatterns = patterns('', 
    ('^admin/', include(admin.site.urls)), 
) 
13

En tal situación, también es una buena práctica para comprobar si el usuario ha iniciado sesión en el panel de administración tiene derechos para gestionar un modelo de este tipo . Si lo hacen, entonces puede cambiar su código para acceder a las funciones como root.

+1

¿Cómo lo corroboras? ¿cómo concedes tus derechos de usuario en un modelo específico? – emisilva

Cuestiones relacionadas