django数据库初始化写入信息
将该文件放在migrations
文件夹下:
初始化media
中的图像名称到图像表中。
from django.db import migrations
from back import settings
import os
from tool.preprocess import namenormal
def forwards_func(apps, schema_editor):
db_alias = schema_editor.connection.alias
TaskInfo = apps.get_model('labelapi', 'TaskInfo')
TaskInfo.objects.using(db_alias).bulk_create([
TaskInfo(taskname='segmentation'),
TaskInfo(taskname='classification'),
])
ImgInfo = apps.get_model('labelapi', 'ImgInfo')
imglist = os.listdir(os.path.join(settings.MEDIA_ROOT, 'image'))
ImgInfoList = []
for i in imglist:
ImgInfoList.append(ImgInfo(imgfile='image/' + namenormal(i)))
ImgInfo.objects.using(db_alias).bulk_create(ImgInfoList)
MatchInfo = apps.get_model('labelapi', 'MatchInfo')
ImgInfoList = ImgInfo.objects.using(db_alias).all()
MatchInfoList = []
# TaskInfo = apps.get_model('labelapi', 'TaskInfo')
taskinfo = TaskInfo.objects.using(db_alias).get(taskname='segmentation')
for i in ImgInfoList:
MatchInfoList.append(MatchInfo(imginfo=i, taskinfo=taskinfo, status=0))
MatchInfo.objects.using(db_alias).bulk_create(MatchInfoList)
def reverse_func(apps, schema_editor):
db_alias = schema_editor.connection.alias
TaskInfo = apps.get_model('labelapi', 'TaskInfo')
TaskInfo.objects.using(db_alias).filter(taskname='segmentation').delete()
TaskInfo.objects.using(db_alias).filter(taskname='classification').delete()
db_alias = schema_editor.connection.alias
ImgInfo = apps.get_model('labelapi', 'ImgInfo')
ImgInfoList = ImgInfo.objects.using(db_alias).all()
for i in ImgInfoList:
i.delete()
MatchInfo = apps.get_model('labelapi', 'MatchInfo')
MatchInfoList = MatchInfo.objects.using(db_alias).all()
for i in MatchInfoList:
i.delete()
class Migration(migrations.Migration):
dependencies = [
('labelapi', '0001_initial'), # 注意依赖
]
operations = [
migrations.RunPython(forwards_func, reverse_func)
]
注意migrations.RunPython
中的参数不是想写几个就写几个。