[英]Django Import-Export: Admin interface “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-integration
對於我的基本python知識,示例代碼與其后面的結果照片之間的差距似乎很大。
我設法編寫以下代碼:
geographic_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)
geographic_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?
geographic_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()
方法期望Model作為第一個參數,並且(可選)將ModelAdmin類(或子類)作為第二個參數。
旁注:因為你剛剛開始使用python / django嘗試遵守約定。 這意味着不要在類Names中的單詞之間使用_
(即RegionalUnits是一個合適的名稱)並嘗試將ModelAdmin
聲明放在admin.py模塊中(即, RegionalUnitsResourceAdmin
應該在admin.py中聲明而不是導入)。
你需要更換
admin.site.register(Regional_Units_Resource_Admin)
同
admin.site.register(Regional_Units, Regional_Units_Resource_Admin)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.