Django:进出口&&格拉佩利

时间:2015-01-28 10:54:14

标签: django django-admin django-grappelli django-import-export

我使用的是Django导入导出应用程序,现在我想添加Grappelli以改进Admin界面。我收到了与模板有关的错误。是否有任何建议让他们一起工作?

错误:

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 %}

4 个答案:

答案 0 :(得分:1)

嗯,我认为您的问题不在模板脚本中,而是扩展。 您的模板会尝试扩展自己。

  

templates \ admin \ change_list.html,第1行的错误1:{%extends   “admin / change_list.html”%}

admin / change_list.html是指基本的django模板change_list。您的django-import-export change_list模板似乎具有相同的路径。您的django-import-export中的change_list模板应该在 模板/管理/的 import_export /change_list.html

答案 1 :(得分:0)

我一起使用它们很好。我必须在admin / 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

希望它有所帮助...

答案 2 :(得分:0)

我刚刚遇到了同样的问题,这是一个更加循序渐进的方法。

在项目中为import_export模板创建一个目录,并为change_list_import模板添加一个html文件。

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 %}

答案 3 :(得分:0)

grappelli必须在INSTALLED_APPS中的import_export之前。

引用自 https://django-grappelli.readthedocs.io/en/latest/thirdparty.html