2014-04-10 67 views
2

我正在執行向我的自定義用戶模型添加引薦代碼的遷移。我已經添加了場看起來是這樣的:南數據遷移期間未修改的數據

refer_code = models.CharField(max_length=10, default=UUID_10) 

在我datamigration我已經添加了以下內容:

for u in orm['app.User'].objects.all(): 
    u.refer_code = UUID_10() 
    print u.name + ': ' + u.refer_code 
    u.save() 

然而,當我進行遷移,我的所有用戶都具有相同的代碼。每個用戶的不同代碼都從print命令中吐出,所以這對我的功能來說不是問題。奇怪的是,如果我回滾數據遷移(它沒有backwards方法)以及之前的添加字段的遷移並重新應用它們,不僅每個模型都具有相同的數據,它確實具有與之前相同的數據。

數據遷移還有其他部分(向數據庫中添加對象(get_or_create))正常工作。

究竟是怎麼回事?

回答

0

我認爲你的函數被調用而不是新字段被創建。所以試着做兩次遷移。首先添加具有默認值的新字段。然後填寫該字段。

+0

這就是我正在做的。 – fredley

+0

那麼在這裏顯示你的遷移文件 –

+0

哪個部分?我已經在這裏包含了相關的代碼,其他的一切都是由南方自動生成的,所以我沒有打擾包括它。 – fredley