Зарегистрированные модели не отображаются в админке
Я добавил модель для администратора через admin.site.register
и не отображается в админке. Поскольку администратор так "это просто работает", я понятия не имею, как это отладить. Указатели?
9 ответов
После добавления и регистрации вашего администратора:
# app/admin.py
class YourModelAdmin(admin.ModelAdmin):
pass
admin.site.register(YourModel, YourModelAdmin)
Убедитесь, что ваше приложение в вашем проекте settings.py
:
# settings.py
INSTALLED_APPS = (
# other apps ...
'app',
)
Синхронизируйте ваш проект для этой модели, если вы еще этого не сделали:
python manage.py syncdb
Перезагрузите сервер, CTRL-C
:
python manage.py runserver
В такой ситуации также рекомендуется проверять, есть ли у пользователя, вошедшего в административную панель, права на управление такой моделью. Если они это сделают, вы можете изменить свой код для доступа к функциям от имени пользователя root.
Если есть сомнения, выключите сервер, syncdb, запустите сервер.
У меня есть опыт, что иногда после изменения admin.py dev-сервер не будет перезапущен. в таком случае touch settings.py
помогает.
Я думаю, что контрольный список в ответе Тьерри почти окончательный, но убедитесь, что urls.py
содержит admin.autodiscover()
загрузить INSTALLED_APPS
модули admin.py
# urls.py
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
('^admin/', include(admin.site.urls)),
)
Больше информации в Django Docs.
Вы добавили приложение в свои установленные приложения? Это случилось со мной как один, так и два раза.:) В противном случае нам было бы полезно увидеть код, который поможет вам.
Также убедитесь, что нет никаких синтаксических ошибок в вашем admin.py или чем-либо еще. Это может привести к тому, что приложение не будет зарегистрировано на AdminSite.
Я столкнулся с той же проблемой, но это было немного сложнее, чем у вас.
Предположим, у вас есть проект с пятью и более приложениями. Для меня более очевидно регистрировать все модели в одном файле admin.py, поэтому я решил сделать это в одном месте - в основном каталоге. Конечно, это не было приложение, поэтому ни одна из моделей не появилась на странице администратора.
Закомментируйте некоторые строки в urls.py
см. документы для более подробной информации
admin.autodiscover()
urlpatterns = patterns('',
('^admin/', include(admin.site.urls)),
)