2016-09-28 74 views
5

我希望我的應用程序具有默認數據,例如用戶類型。什麼是遷移後管理默認數據的最有效方式。Django在遷移後插入默認數據

它需要處理的情況下,例如我添加一個新的表後,它添加了它的默認數據。

回答

1

我想你正在尋找的是fixtureshttps://docs.djangoproject.com/en/1.10/howto/initial-data/

從文檔

它有時有用的預填充硬編碼的數據當你第一次建立一個應用程序的數據庫。您可以通過燈具提供初始數據。

也閱讀了本https://code.djangoproject.com/wiki/Fixtures

+0

該文檔抵觸這樣的回答: 「如果你想自動加載初始數據的應用程序,不使用固定裝置相反,創建與RunPython或RunSQL操作您的應用程序遷移。」 – Dennis

+0

@Dennis OP問道:「遷移後管理默認數據的最有效方法是什麼?」即使有關於遷移的答案,他選擇我的答案作爲他的問題的正確答案。 –

+0

@丹尼斯您從文檔中使用的引用也是關於應用程序而不是項目。 –

10

您需要創建一個空的遷移文件,做你的東西,在操作區塊,如文檔解釋。

Data Migrations

以及改變數據庫模式,您也可以使用遷移,如果你想使用的模式來改變數據庫本身的數據,並結合。

現在,所有你需要做的就是創建一個新的功能,並RunPython使用它

文檔解釋了這個用一個例子來說明,如何與您的模型進行通信。

從文檔

要創建一個空的遷移文件,

python manage.py makemigrations --empty yourappname 

這是如何更新新增加的字段的例子。

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import migrations, models 

def combine_names(apps, schema_editor): 
    # We can't import the Person model directly as it may be a newer 
    # version than this migration expects. We use the historical version. 
    Person = apps.get_model("yourappname", "Person") 
    for person in Person.objects.all(): 
     person.name = "%s %s" % (person.first_name, person.last_name) 
     person.save() 

class Migration(migrations.Migration): 
    initial = True 

    dependencies = [ 
     ('yourappname', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RunPython(combine_names), 
    ] 
+2

這應該是被接受的答案。 – shuboy2014