Django项目与管理面板问题
我将所有模型存储在一个名为models的文件夹中,它对我来说工作正常。但是,admin.py存在一些问题,我应该在哪里存储此文件?在模型文件夹或应用程序文件夹内?当我试图插入模型到管理面板时,我得到了一个错误。Django项目与管理面板问题
错误:
TypeError at /admin/
'module' object is not iterable
Request Method: GET
Request URL: http://localhost:9004/admin/
Django Version: 1.4.5
Exception Type: TypeError
Exception Value:
'module' object is not iterable
Exception Location: /usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py in register, line 74
Python Executable: /usr/bin/python2.7
Python Version: 2.7.3
Python Path:
['/home/***/**/**/Testcase_Project',
'/home/***/**/**/Testcase_Project',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Server time: Sat, 16 Mar 2013 11:31:39 +0200
Traceback Switch to copy-and-paste view
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
request.path_info)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in resolve
for pattern in self.url_patterns:
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in urlconf_module
self._urlconf_module = import_module(self.urlconf_name)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module
__import__(name)
...
▶ Local vars
/home/***/***/***/Testcase_Project/Testcase_Project/urls.py in <module>
admin.autodiscover()
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py in autodiscover
import_module('%s.admin' % app)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module
__import__(name)
...
▶ Local vars
/home/***/***/***/Testcase_Project/Testcase_Project/admin.py in <module>
admin.site.register(test_cases)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py in register
for model in model_or_iterable:
...
▶ Local vars
这是完全正常的对象分成模块到包等你只需要记住的Django只查找默认情况下一个包的根目录下有admin.py
和models.py
文件。这里的解决方案是明确导入所需的文件,这是一个很好的地方,它是首先编译的__init__
文件。
例如, (Django的1.4设置,在Django的结构here更多信息):
/project_root
/project
__init__.py
settings.py
urls.py
/app
__init__.py
admin.py
models.py
manage.py
可以转换为:
/project_root
/project
__init__.py
settings.py
urls.py
/app
__init__.py # <- import statements
/admin
admin_foo.py
admin_bar.py
/models
model_foo.py
model_bar.py
manage.py
然后在你__init__.py
您的应用程序文件夹里面添加:
from .models.model_foo import Foo
from .models.model_bar import Bar
from .admin.admin_foo import FooAdmin
from .admin.admin_bar import BarAdmin
而且由于安装的应用程序如何定义事物,因此您不应该忘记将app_label属性添加到模型Meta类中:
class Foo(models.Model):
# fields...
class Meta:
app_label = 'app'
class Bar(models.Model):
# fields...
class Meta:
app_label = 'app'
好我做过这样的事情,但不是模型显示管理面板起来...... – vovaminiof 2013-03-16 09:15:58
大概是因为还是有一些老编译隐藏'.pyc'在您的应用程序文件夹中的文件,删除它们,你应该没事的。 '找。 -type f -name“* .pyc”| xargs rm;' – 2013-03-16 09:22:40
我得到:''模块'对象是不可迭代的“错误 – vovaminiof 2013-03-16 09:32:14
这是app文件夹内 – catherine 2013-03-16 08:33:40