我正在尝试弄清楚如何使用 Django Import-Export,
https://pypi.python.org/pypi/django-import-export
通过阅读文档
https://django-import-export.readthedocs.org/en/latest/getting_started.html#admin-integration
管理集成:
示例代码和随后生成的照片之间的差距,对于我的基本 python 知识来说似乎是巨大的。
我已经成功编写了以下代码:
geographical_system/models.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)
geographical_system/resources.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?
geographical_system/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()
方法需要模型作为第一个参数,并且(可选)一个 ModelAdmin 类(或子类)作为第二个参数。
旁注:由于您刚刚开始使用 python/django,请尝试遵守约定。这意味着不要在类名称中的单词之间使用 _
(即 RegionalUnits 是一个合适的名称)并尝试将 ModelAdmin
声明放在 admin.py 模块中(即 RegionalUnitsResourceAdmin
应在 admin.py 中声明而不是导入)。
关于python - Django import/export : Admin interface "TypeError at/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411760/