我有一個正在發展的django應用程序。模型經常改變,我使用Django South來應用模式遷移。如何在django中更改模型時填充數據庫字段
有時我的更改涉及填充基於sql邏輯添加的新值。
例如,爲當前付費用戶添加了新的布爾標誌。我已經添加了該字段,應用了遷移,但現在我想基於來自其他表的數據填充字段以顯示誰付款。
我知道我可以用簡單的sql語句做到這一點,但我的環境是自動化的並使用CI。我想推送更改並自動填充標誌。
我該如何做到這一點?與南?用Django?
我有一個正在發展的django應用程序。模型經常改變,我使用Django South來應用模式遷移。如何在django中更改模型時填充數據庫字段
有時我的更改涉及填充基於sql邏輯添加的新值。
例如,爲當前付費用戶添加了新的布爾標誌。我已經添加了該字段,應用了遷移,但現在我想基於來自其他表的數據填充字段以顯示誰付款。
我知道我可以用簡單的sql語句做到這一點,但我的環境是自動化的並使用CI。我想推送更改並自動填充標誌。
我該如何做到這一點?與南?用Django?
有一個叫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')
您可以在由南部創建的遷移腳本中添加代碼。
如果您已更新模型並完成schemamigration
南方,它將創建一個腳本來應用該遷移。它將在appname/migration/00N_some_name.py
。
在模式更改完成後,您可以在末尾的腳本中將代碼添加到forwards()
方法中。