2013-08-31 72 views
3

我有一個正在發展的django應用程序。模型經常改變,我使用Django South來應用模式遷移。如何在django中更改模型時填充數據庫字段

有時我的更改涉及填充基於sql邏輯添加的新值。

例如,爲當前付費用戶添加了新的布爾標誌。我已經添加了該字段,應用了遷移,但現在我想基於來自其他表的數據填充字段以顯示誰付款。

我知道我可以用簡單的sql語句做到這一點,但我的環境是自動化的並使用CI。我想推送更改並自動填充標誌。

我該如何做到這一點?與南?用Django?

回答

1

有一個叫data migration的事情,這是一個完美的使用情況是:

數據遷移是用來改變存儲在數據庫中 匹配新的模式或功能的數據。

from south.v2 import DataMigration 
from django.conf import settings 

class Migration(DataMigration): 
    def forwards(self, orm): 
     # update your user's boolean flag here 

查看數據遷移here的一個例子。

,或者,你可以打開你的架構遷移.py文件並填充字段forwards()方法,像這樣:

class Migration(SchemaMigration): 
    def forwards(self, orm): 
     # Adding field 'User.paying' 
     db.add_column(u'user', 'paying', 
         self.gf('django.db.models.fields.BooleanField')(default=True), 
         keep_default=False) 

     # update your user's boolean flag here 

    def backwards(self, orm): 
     # Deleting field 'User.paying' 
     db.delete_column(u'user', 'paying') 
0

您可以在由南部創建的遷移腳本中添加代碼。

如果您已更新模型並完成schemamigration南方,它將創建一個腳本來應用該遷移。它將在appname/migration/00N_some_name.py

在模式更改完成後,您可以在末尾的腳本中將代碼添加到forwards()方法中。

相關問題