天天看點

django初始化資料庫

    最近項目需要,需要在表建立好之後,初始化一些資料。Django初始化資料的方法有很多,但都需要額外的手動操作,不智能。看網上有一種方法用post_syncdb信号來初始化資料庫,但是我用的Django版本是1.8, 使用python manage.py migrate來同步資料庫,不使用Python manage.py syncdb來同步資料庫,就想看看能否使用post_migrate信号來初始化資料庫。研究了Django的signal,試了一下,果然可以。

在你的APP目錄下,建立一個檔案management.py

from django.db.model.signal import post_migrate
from myapp.models import MyModel

#定義receiver函數
def init_db(sender, **kwargs):
    if sender.name == 'MyModel.__name__':
        if not MyModel.objects.exists():
            MyModel.objects.create()        # 當發送信号的模型是你要初始化的模型的時候,在進行資料庫操作,不加判斷的話,每一個模型都會調用

post_migrate.connect(init_db)
           

這樣就好了,你執行Python manage.py migrate 之後,就會初始化資料