2010-10-30 68 views
7

我犯了一個創建我自己的用戶模型的錯誤,並試圖恢復。在南遷移之前加載燈具

我創建了一個南遷移,它複製我的舊用戶模型並創建django.contrib.auth.models.User模型。爲了確保我目前的用戶不會在黑暗中離開,我創建了一堆單元測試,以確保所有內容都得到適當的轉換。

所以,我需要測試南遷移,看看它是否工作。爲此,我需要在遷移運行之前加載舊用戶類型的數據。我怎麼做?

回答

7

當測試套件通過python manage.py test someapp運行時,首先創建一個測試數據庫,然後按順序應用所有遷移,然後運行測試用例。因此,如果目標是測試遷移本身,則需要在遷移之前加載fixture數據。

您可以將一行或兩個加載夾具添加到您的遷移中,只是爲了測試而應用您的模型更改,然後刪除。

def forwards(self, orm): 
    from django.core import management 
    management.call_command('loaddata', 'myfixture.json') 
    ... your migration 

此外,還可以在一些由Django的設置添加一個條件,那麼你就無需再編輯代碼。

+0

請注意,以這種方式加載'initial_data'是一個壞主意:經過一段時間後,您最終會在'initial_data.json'中添加新的對象實例,這會在模型遷移之前加載。測試和未經批准;)。 – 2014-05-28 09:15:07