Django 导入-导出:管理界面"TypeError at /"



我正试图弄清楚如何使用Django Import Export,

https://pypi.python.org/pypi/django-import-export

通过阅读文档

https://django-import-export.readthedocs.org/en/latest/getting_started.html#admin-集成

管理集成:

对于我基本的python知识来说,示例代码和下面的图片之间的差距似乎很大。

我已经设法对以下内容进行了编码:

地理系统/模型.py

from django.db import models
from django.utils.translation import ugettext_lazy as _
class Regional_Units(models.Model):
    regional_unit = models.CharField(
        max_length=64, verbose_name=_(u'Regional Units'))
    def __unicode__(self):
        return u'%s' % (self.regional_unit)

地理系统/资源.py:

from import_export import resources
from geographical_system.models import Regional_Units
from import_export.admin import ImportExportModelAdmin

class Regional_Units_Resource(resources.ModelResource):
    class Meta(object):
        model = Regional_Units

class Regional_Units_Resource_Admin(ImportExportModelAdmin):
    resouce_class = Regional_Units_Resource # Why originally commented out?
    #pass #Why pass?

地理系统/admin.py:

from django.contrib import admin
from geographical_system.models import Regional_Units
from geographical_system.resources import Regional_Units_Resource_Admin

admin.site.register(Regional_Units)
admin.site.register(Regional_Units_Resource_Admin)  # **Improvising here**, otherwise nothing would happen

结果错误

当然,我即兴创作的admin.site.register(Regional_Units_Resource_Admin)在访问时产生了以下信息

http://127.0.0.1:8000/admin/geographical_system/regional_units/

TypeError at /admin/geographical_system/regional_units/
'RenameBaseModelAdminMethods' object is not iterable
Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/geographical_system/regional_units/
Django Version:     1.6
Exception Type:     TypeError
Exception Value:    
'RenameBaseModelAdminMethods' object is not iterable
Exception Location:     /home/flyer/.virtualenvs/rara/lib/python2.7/site-packages/django/contrib/admin/sites.py in register, line 71
Python Executable:  /home/flyer/.virtualenvs/rara/bin/python
Python Version:     2.7.5
Python Path:    
['/home/flyer/02/rara',
 '/home/flyer/.virtualenvs/rara/lib64/python27.zip',
 '/home/flyer/.virtualenvs/rara/lib64/python2.7',
 '/home/flyer/.virtualenvs/rara/lib64/python2.7/plat-linux2',
 '/home/flyer/.virtualenvs/rara/lib64/python2.7/lib-tk',
 '/home/flyer/.virtualenvs/rara/lib64/python2.7/lib-old',
 '/home/flyer/.virtualenvs/rara/lib64/python2.7/lib-dynload',
 '/usr/lib64/python2.7',
 '/usr/lib/python2.7',
 '/usr/lib64/python2.7/lib-tk',
 '/home/flyer/.virtualenvs/rara/lib/python2.7/site-packages']

问题

  • 为什么会出现此错误
  • 我怎么能进入这个美丽的管理界面,导入和导出选项被启用

虽然我不熟悉这个特定的应用程序,但你应该做的是替换

admin.site.register(Regional_Units)
admin.site.register(Regional_Units_Resource_Admin)

带有

admin.site.register(Regional_Units, Regional_Units_Resource_Admin)

如果其他一切都好的话,它应该会起作用。admin register()方法要求Model作为第一个参数,(可选)ModelAdmin类(或子类)作为第二个参数。

旁注:由于您刚开始使用python/django,请尝试遵守这些约定。这意味着不要在类名中的单词之间使用_(即RegionalUnits是一个合适的名称),并尝试将ModelAdmin声明放在admin.py模块内(即RegionalUnitsResourceAdmin应该在admin.py中声明,而不是导入)。

您应该更换

admin.site.register(Regional_Units_Resource_Admin)

带有

admin.site.register(Regional_Units, Regional_Units_Resource_Admin)

最新更新