2

Я использовал приложение импорта-экспорта Django, и теперь я хочу добавить Grappelli, чтобы улучшить интерфейс администратора. Я получаю сообщение об ошибке, связанную с шаблонами. Любое предложение заставить их работать вместе?Django: import-export && Grappelli

Ошибка:

Environment: 


Request Method: GET 
Request URL: http://localhost:8000/admin/db_personal/personalinstituto/ 

Django Version: 1.7c1 
Python Version: 2.7.8 
Installed Applications: 
('grappelli', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'import_export', 
'db_personal') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Template error: 
In template C:\Gestion AI2\web_nueva\templates\admin\change_list.html, error at line 1 
    maximum recursion depth exceeded in __instancecheck__ 
    1 : {% extends "admin/change_list.html" %} 


    2 : 


    3 : {# Original template renders object-tools only when has_add_permission is True. #} 


    4 : {# This hack allows sub templates to add to object-tools #} 


    5 : {% block object-tools %} 


    6 : <ul class="object-tools"> 


    7 :  {% block object-tools-items %} 


    8 :  {% if has_add_permission %} 


    9 :   {{ block.super }} 


    10 :  {% endif %} 


    11 :  {% endblock %} 
+0

Вот решение: https://github.com/bmihelac/django-import-export/issues/38 Но по-прежнему существует проблема с тем, как отображаются кнопки «Импорт», «Экспорт» и «Добавить», потому что они скрыты (расположены между словом «admin» и «Фильтр»): https://dl.dropboxusercontent.com/u/23171086/image.png – loar

ответ

0

Я только что прошел через ту же самую проблему, и вот еще шаг за шагом подход.

Создайте каталог в своем проекте для шаблонов import_export и добавьте html-файл для шаблона change_list_import.

myproj 
├── myproj 
│ ├──url.py 
│ ├──settings.py 
├── manage.py 
├── db_personal #myapp 
│ ├── admin.py 
│ ├── models.py 
| ├── viewss.py 
├── templates 
| ├── admin 
| | ├── import_export 
| | | ├── change_list_import.html 
├── dashboard.py 

Затем скопируйте следующий код в этот шаблон html-файла. Обратите внимание, что необходимо расширить Grappelli шаблон списка изменений, следовательно, ссылку на местоположение этого шаблона:

{% extends "C:/Python27/lib/site-packages/grappelli/templates/admin/change_list.html" %} 
{% load i18n %} 

{% block object-tools-items %} 
    <li><a href="import/" class="import_link">{% trans "Import" %}</a></li> 
    {{ block.super }} 
{% endblock %} 
+0

Есть ли способ избежать жесткого пути к шаблону grappelli? –

+0

Ответ [здесь] (http://stackoverflow.com/questions/22784134/django-grappelli-change-form-html-override) предоставляет способ использования TEMPLATE_DIRS, который контролирует порядок загрузки шаблонов – brunostuyts

0

Я использую их вместе хорошо. Я должен был изменить это в админ/includes_grappelli/header.html:

-     {% url admin:password_change as password_change_url %} 
+     {% url 'admin:password_change' as password_change_url %} 

-     {% url admin:logout as logout_url %} 
+     {% url 'admin:logout' as logout_url %} 

-    {% url test-index as testindexurl %} 
+    {% url 'test-index' as testindexurl %} 

-    {% url django-admindocs-docroot as docsroot %} 
+    {% url 'django-admindocs-docroot' as docsroot %} 

И называть его ImportExportActionModelAdmin, чтобы избежать проблем с CSS.

from import_export.admin import ImportExportActionModelAdmin 

class MyModelAdmin(ImportExportActionModelAdmin): 
    """ 
    Admin class for MyModel model 
    """ 
    form = MyModelAdminForm 

    list_display =() 
    ordering = [] 

    resource_class = MyModelResource 

Надеется, что это помогает ...

+0

Я могу 't найти header.html :( – loar

+0

Должно быть в C: \ Gestion AI2 \ web_nueva \ templates \ admin \ includes_grappelli/ https://github.com/chronossc/django-grappelli/blob/master/grappelli/templates/ admin/includes_grappelli/header.html – HydrUra

+0

Это не последняя версия. – loar

1

Ну, я думаю, ваша проблема не в сценарии шаблона, но удлинять. Ваш шаблон пытается расширить себя.

templates\admin\change_list.html, error at line 1 1 : {% extends "admin/change_list.html" %}

admin/change_list.html относится к базовому шаблону изменения django. Кажется, что ваш шаблон change_list django-import-export имеет тот же путь. Шаблон change_list из Джанго-импорт-экспорт должен быть в шаблон/администратор/Import_Export /change_list.html

+0

Я скопировал change_list.html из import-export в C: \ Gestion AI2 \ web_nueva \ templates \ admin \ import_export/change_list.html, но ничего не меняется. Должен ли я изменить расширение? – loar

+0

@Alex_Loar Извините, это не то, что я имел в виду. Я немного смущен. Какое приложение это каталог C: \ Gestion AI2 \ web_nueva \ templates \ from? grappelli или импорт-экспорт? В вашей ошибке показан сценарий import-export change_list.html.Поэтому я сначала подумал, что каталог (... web_nueva \ templates \) был импорт-экспорт, но теперь я не уверен. – jcs

Смежные вопросы