2010-12-15 42 views

回答

6

將其放入相關應用程序的目錄中。舉例來說,如果你有這樣一個項目:

my_project/ 
    my_app/ 
     models.py 
     views.py 
     tests.py 

棒在這裏:

my_project/ 
    my_app/ 
     management.py 
     models.py 
     views.py 
     tests.py 

(這將使管理模塊的*程序my_app *包內,在Python術語。)

+0

然後,當我運行syncdb時,它會自動使用該management.py文件? 「附加到syncdb信號」是什麼意思? – TIMEX 2010-12-15 22:23:44

+2

當Django加載應用程序時,它會加載並執行該應用程序中的所有模塊,因此將執行「管理」。 Django使用信號允許應用程序的某些部分得到有關應用程序的其他部分正在做什麼的通知。 'syncdb'是一個這樣的信號,當'manage.py syncdb'被調用時會被觸發。 – mipadi 2010-12-15 22:26:30

+0

好的謝謝。所以基本上我只是創建該文件,就是這樣。我正常運行syncdb。如果我使用南方怎麼辦?如果我使用模式遷移,它會運行嗎?如果沒有,那麼我必須手動運行management.py,對吧? – TIMEX 2010-12-15 22:28:22

1

並非django應用程序中的每個模塊都在項目啓動時執行。只有models.py是。這很醜,但你可以把代碼放在那裏。 management.py文件可能是一個錯誤。

0

From the Django manual:

django.db.models.signals.pre_syncdb

由執行syncdb命令發送它開始安裝應用程序之前。

任何偵聽此信號的處理程序都需要寫入一個特定的地方:一個管理模塊位於您的INSTALLED_APPS之一中。 如果處理程序在其他地方註冊,則可能不會由syncdb加載。

這是因爲執行syncdb不會加載Django項目的所有部分,所以,如果你在models.py定義執行syncdb的信號,它不會找到它,但在這裏定義的信號並不需要在任何地方否則在框架中。