django-admin-tools에서 장고를 사용하고 있습니다. SiteAdmin을 하위 클래스로 만들고이를 사용하여 내 관리 클래스를 등록하면 전체 응용 프로그램 메뉴가 사라집니다. 지수와 app_index에 내 수정은 그냥 위와 같이 내 모든 응용 프로그램 모델 같은 방법으로 등록SiteAdmin을 서브 클래스 화하면 응용 프로그램의 Django 관리 도구 메뉴가 표시되지 않습니다.
class CustomAdminSite(AdminSite):
@never_cache
def index(self, request, extra_context=None):
"""
Displays the main admin index page, which lists all of the installed
apps that have been registered in this site.
"""
app_dict = {}
user = request.user
for model, model_admin in self._registry.items():
app_label = model._meta.app_label
has_module_perms = user.has_module_perms(app_label)
if has_module_perms:
perms = model_admin.get_model_perms(request)
# Check whether user has any perm for this module.
# If so, add the module to the model_list.
if True in perms.values():
info = (app_label, model._meta.module_name)
model_dict = {
'name': capfirst(model._meta.verbose_name_plural),
'perms': perms,
}
if hasattr(model_admin, 'picture'):model_dict['picture'] = model_admin.picture
if perms.get('change', False):
try:
model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)
except NoReverseMatch:
pass
if perms.get('add', False):
try:
model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)
except NoReverseMatch:
pass
if app_label in app_dict:
app_dict[app_label]['models'].append(model_dict)
else:
app_dict[app_label] = {
'name': app_label.title(),
'app_url': reverse('admin:app_list', kwargs={'app_label': app_label}, current_app=self.name),
'has_module_perms': has_module_perms,
'models': [model_dict],
}
# Sort the apps alphabetically.
app_list = list(six.itervalues(app_dict))
app_list.sort(key=lambda x: x['name'])
# Sort the models alphabetically within each app.
for app in app_list:
app['models'].sort(key=lambda x: x['name'])
context = {
'title': _('Site administration'),
'app_list': app_list,
}
context.update(extra_context or {})
return TemplateResponse(request, self.index_template or
'admin/index.html', context,
current_app=self.name)
def app_index(self, request, app_label, extra_context=None):
user = request.user
has_module_perms = user.has_module_perms(app_label)
app_dict = {}
for model, model_admin in self._registry.items():
if app_label == model._meta.app_label:
if has_module_perms:
perms = model_admin.get_model_perms(request)
# Check whether user has any perm for this module.
# If so, add the module to the model_list.
if True in perms.values():
info = (app_label, model._meta.module_name)
model_dict = {
'name': capfirst(model._meta.verbose_name_plural),
'perms': perms,
}
if hasattr(model_admin, 'picture'):model_dict['picture'] = model_admin.picture
if perms.get('change', False):
try:
model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)
except NoReverseMatch:
pass
if perms.get('add', False):
try:
model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)
except NoReverseMatch:
pass
if app_dict:
app_dict['models'].append(model_dict),
else:
# First time around, now that we know there's
# something to display, add in the necessary meta
# information.
app_dict = {
'name': app_label.title(),
'app_url': '',
'has_module_perms': has_module_perms,
'models': [model_dict],
}
if not app_dict:
raise Http404('The requested admin page does not exist.')
# Sort the models alphabetically within each app.
app_dict['models'].sort(key=lambda x: x['name'])
context = {
'title': _('%s administration') % capfirst(app_label),
'app_list': [app_dict],
}
context.update(extra_context or {})
return TemplateResponse(request, self.app_index_template or [
'admin/%s/app_index.html' % app_label,
'admin/app_index.html'
], context, current_app=self.name)
custom_site = CustomAdminSite(name='admin')
custom_site.register(Group, GroupAdmin)
custom_site.register(User, UserAdmin)
custom_site.register(Site, SiteAdmin)
, 인증 및 사이트 메뉴가 표시됩니다 model_dict하는 admin_model에서 그림 속성을 추가 있지만 내 응용 프로그램과의 없음 자신의 model_admin의
, 나는 기존의 동일한 이름으로 내 새에 전체를 전송, 나는 단지 '관리'와 다른이 존재하지 않는 것입니다있다 그게 같은 문제 야? – Serjik
나는 이것이 동일한 문제라고 생각한다. admin 툴은 기본 Django Admin 인스턴스에만 제한되어 있으며 현재는 커스텀 클래스를 지원할 수 없다. (이름은 중요하지 않다. – HankMoody