Я установил и настроил django -admin-tool, используя следующую документацию Настройка django -admin-tools
Кажется, все работает нормально, но я не знаю как добавить мои модели в панель управления?
Мое приложение называется "hotel", например, в представлениях я могу связать свои модели, например:
views.py
from hotel.models import Rooms
Я использовал пользовательский dashboard.py (автоматически сгенерированный) и добавил следующий дочерний элемент:
dashboard.py
#Hotel settings
self.children.append(modules.AppList(
_('Hotel settings'),
models=('hotel.*',),
content='Test content',
children=[]
))
, но ничего не изменилось .
Когда я изменяю на:
#Hotel settings
self.children.append(modules.AppList(
_('Hotel settings'),
models=('django.contrib.*',),
content='Test content',
children=[]
))
Затем я вижу новый раздел "Настройка отеля".
Кажется, ошибка в
models=('hotel.*',),
Что может быть не так? Или я понимаю, как django -admin-tools работает неправильно? Должен ли я использовать CustomAppIndexDashboard вместо этого?
Я пытался изменить CustomAppIndexDashboard, но ничего не изменилось в админке. Для доступа к CustomAppIndexDashboard необходимо использовать любой другой URL-адрес? Или как это работает?
Я проверил права пользователей. У меня есть только один пользователь, и этот пользователь является суперпользователем, поэтому у этого пользователя есть разрешения на все модели.
Полный файл dashboard.py:
dashboard.py
from django.utils.translation import ugettext_lazy as _
try:
from django.urls import reverse
except ImportError:
from django.core.urlresolvers import reverse
from admin_tools.dashboard import modules, Dashboard, AppIndexDashboard
from admin_tools.utils import get_admin_site_name
class CustomIndexDashboard(Dashboard):
def init_with_context(self, context):
site_name = get_admin_site_name(context)
# append a link list module for "quick links"
self.children.append(modules.LinkList(
_('Quick links'),
layout='inline',
draggable=False,
deletable=False,
collapsible=False,
children=[
[_('Return to site'), '/'],
[_('Change password'),
reverse('%s:password_change' % site_name)],
[_('Log out'), reverse('%s:logout' % site_name)],
]
))
#Hotel settings
self.children.append(modules.AppList(
_('Hotel settings'),
models=('django.contrib.*',),
content='Test content',
children=[]
))
# append an app list module for "Applications"
self.children.append(modules.AppList(
_('Applicationss'),
exclude=('django.contrib.*',),
))
# append an app list module for "Administration"
self.children.append(modules.AppList(
_('Administration'),
models=('django.contrib.*',),
))
# append a recent actions module
self.children.append(modules.RecentActions(_('Recent Actions'), 5))
# append a feed module
self.children.append(modules.Feed(
_('Latest Django News'),
feed_url='http://www.djangoproject.com/rss/weblog/',
limit=5
))
# append another link list module for "support".
self.children.append(modules.LinkList(
_('Support'),
children=[
{
'title': _('Django documentation'),
'url': 'http://docs.djangoproject.com/',
'external': True,
},
{
'title': _('Django "django-users" mailing list'),
'url': 'http://groups.google.com/group/django-users',
'external': True,
},
{
'title': _('Django irc channel'),
'url': 'irc://irc.freenode.net/django',
'external': True,
},
]
))
class CustomAppIndexDashboard(AppIndexDashboard):
# we disable title because its redundant with the model list module
title = ''
def __init__(self, *args, **kwargs):
AppIndexDashboard.__init__(self, models, *args, **kwargs)
# append a model list module and a recent actions module
self.children += [
modules.ModelList(self.app_title, self.models),
modules.RecentActions(
_('Recent Actions'),
include_list=self.get_app_content_types(),
limit=5
),
]
def init_with_context(self, context):
"""
Use this method if you need to access the request context.
"""
return super(CustomAppIndexDashboard, self).init_with_context(context)
Заранее спасибо.