2011-03-12 62 views
1

我正在試驗Page extensionsFeinCMS 1.2.1。Django FeinCMS和頁面擴展問題

我想創建這個簡單的頁面擴展:

from django.db import models 

def register(cls, admin_cls): 
    cls.add_to_class(models.TextField()) 

,但我不斷收到此錯誤:

AttributeError: 'module' object has no attribute 'TextField' 

包含擴展的包被稱爲dev.extensions和模塊categories,我已將它添加到Python路徑中,並使用Page.register_extensions('dev.extensions.categories')註冊了擴展名。

我想知道我在做什麼錯,請幫忙。

完整的堆棧跟蹤如下。

c:\sandbox\projects\feindev>python manage.py runserver 
Traceback (most recent call last): 
    File "manage.py", line 13, in <module> 
    execute_manager(settings) 
    File "c:\sandbox\environments\feincms-1.2 
.1\lib\site-packages\django\core\management\__init__.py", line 436, in execute_m 
anager 
    setup_environ(settings_mod) 
    File "c:\sandbox\environments\feincms-1.2 
.1\lib\site-packages\django\core\management\__init__.py", line 419, in setup_env 
iron 
    project_module = import_module(project_name) 
    File "c:\sandbox\environments\feincms-1.2 
.1\lib\site-packages\django\utils\importlib.py", line 35, in import_module 
    __import__(name) 
    File "c:\sandbox\projects\feindev\..\fein 
dev\__init__.py", line 52, in <module> 
    Page.register_extensions('dev.extensions.types') 
    File "c:\sandbox\environments\feincms-1.2 
.1\lib\site-packages\feincms\models.py", line 270, in register_extensions 
    cls.register_extension(fn) 
    File "c:\sandbox\environments\feincms-1.2 
.1\lib\site-packages\feincms\module\page\models.py", line 564, in register_exten 
sion 
    register_fn(cls, PageAdmin) 
    File "c:\sandbox\projects\feindev\dev\ext 
ensions\types\__init__.py", line 4, in register 
    cls.add_to_class(models.TextField()) 
AttributeError: 'module' object has no attribute 'TextField' 
+0

會發生什麼事,如果你前行權做印刷(DIR(型號)),是造成你一個問題嗎?如果你打印(型號.__包裝___)? – 2011-03-13 00:31:26

+0

'['__builtins__','__doc__','__file__','__name__','__package __']和'無' – Paolo 2011-03-13 00:49:47

回答

3

在註冊函數運行之前,可能模型在某處被重新分配給另一個模塊?

試着改變你的代碼如下:

from django.db import models as django_models 

def register(cls, admin_cls): 
    cls.add_to_class('field_name_here', django_models.TextField()) 
+0

謝謝,那就是問題所在!現在它說'TypeError:add_to_class()只需要3個參數(2給定)',但沒關係,這是因爲需要第一個位置參數。順便說一句,我只是想知道混亂髮生在哪裏......你也有任何暗示嗎? :) – Paolo 2011-03-13 01:02:16

+0

我對feincms不熟悉,但我想象一下feincms導入擴展的方式必須存在一些範圍問題。當註冊方法被導入到另一個模塊時,模型的範圍必須在某個點被重新定義?這只是一個猜測,因爲我仍然需要研究Python在Python中的工作原理。 – 2011-03-13 01:11:57

+0

本地化問題,Page.register_extensions必須在Page.register_templates之前調用。雖然,即使看着register_templates [源代碼](https://github.com/matthiask/feincms/blob/v1.2.1/feincms/models.py#L171)我不明白爲什麼。但那可能是我的極限!我真的很感激一個解釋。謝謝。 – Paolo 2011-03-13 01:57:50