最近項目需要,需要在表創建好之后,初始化一些數據。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_migratefrom 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 之后,就會初始化數據。
以上這篇django初始化數據庫的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答