django有很多种方法初始数据,但是有些特殊情况,比如部署django应用,但是你不能手动输入manage命令的时候,你可能就需要这样做:
在migrations文件夹(前提已经makemigrations过)
py文件中写入方法
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from django.core import serializers
from home_application.utils import initialization_data
def inital_init_data(apps, schema_editor):
try:
# 函数名称自定义,里面的方法自定义
# 初始化数据
func_script = initialization_data.add_script_data() # 如果需要初始化的数据较多,可以写个自定义方法,只要格式保持和以下注释内容相同即可
"""
初始化数据格式 model代表你要操作哪个数据库:你的app名称.你的models表名
fields代表你的表中的字段需要初始化的字段对应的值:
func_script = [
{'model': 'home_application.Script',
'fields': {
'id': 1,
'name': 'xxx',
'content': "count",
'sign': 'out',
}},
{'model': 'home_application.Script',
'fields': {
'id': 2,
'name': 'xxx',
'content': "count",
'sign': 'into'
}},
]
"""
# 最后需要将你自定义好的需要初始化数据数组写到如下当做参数
func_obj = serializers.deserialize('python', func_script, ignorenonexistent=True)
for obj in func_obj:
obj.save()
except Exception, e:
print e
class Migration(migrations.Migration):
dependencies = [
('home_application', '0002_auto_20190129_0944'),
] # 此处代表你的app名称,后面一个代表你需要继承哪一个migrations文件,一般是最后一个
operations = [
migrations.RunPython(inital_init_data),
] # 此处是参数是你自定义的方法
上述完成后
确保代码无误,数据初始化格式正确,执行migrate即可。
如果有其它非语法错误,可能是你的需要初始化的数据表不是空的,清空即可
如果你需要初始化多个数据库,复制粘贴自定义方法里面的内容,写入新的初始化数据