2013-03-16 245 views
0

我將所有模型存儲在一個名爲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 
+0

這是app文件夾內 – catherine 2013-03-16 08:33:40

回答

0

這是完全正常的對象分成模塊到包等你只需要記住的Django只查找默認情況下一個包的根目錄下有admin.pymodels.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' 
+0

好我做過這樣的事情,但不是模型顯示管理面板起來...... – vovaminiof 2013-03-16 09:15:58

+0

大概是因爲還是有一些老編譯隱藏'.pyc'在您的應用程序文件夾中的文件,刪除它們,你應該沒事的。 '找。 -type f -name「* .pyc」| xargs rm;' – 2013-03-16 09:22:40

+0

我得到:''模塊'對象是不可迭代的「錯誤 – vovaminiof 2013-03-16 09:32:14