關於initial_data
燈具,您無能爲力。不過,我總覺得那些效用低於最佳效果。您很少想要每次撥打syncdb
或migrate
時再次應用相同的燈具。
如果你使用的是不同的名稱,夾具,你可以很容易使其與遷移運行中加入以下到您轉發遷移(從South docs)
from django.core.management import call_command
call_command("loaddata", "my_fixture.json")
所以真的,所有你需要的是在某些環境中只能這樣做的一些方法。對於開發者來說,最簡單的方法就是簡單地依靠DEBUG
。因此,前面的代碼變爲:
from django.conf import settings
from django.core.management import call_command
if settings.DEBUG:
call_command("loaddata", "dev_fixture.json")
如果你需要更大的控制權,就可以建立某種形式的設置,將在每一個不同local_settings.py
(或者你使用什麼方法,基於環境的自定義設置)。例如:
# local_settings.py
ENV = 'staging'
# migration
from django.conf import settings
from django.core.management import call_command
if settings.ENV == 'staging':
call_command("loaddata", "staging_fixture.json")
很好的答案!你如何處理過時的設備:你像對待移動一樣對待它們嗎?因此,如果您的夾具加載遷移是#3,並且在10次遷移後夾具已過時,那麼您是否只添加一個新的遷移,以加載一個新的夾具,該遷移成爲遷移#14? – jawilmont 2012-02-02 18:10:49
固定裝置本質上是即時快照。如果你的數據庫從一個遷移改變,他們很可能不會再工作了。所以,我會說,是的,如果您創建新的遷移並需要專門處理該遷移的設備,則應該簡單地根據數據庫的當前狀態創建一個新的設備。 – 2012-02-02 18:30:07