我是在我的视图中执行的。py
import os
import django
from django.core import management
def runmigrate(self, databasename):
try:
print('0')
os.chdir(os.getcwd())
management.call_command('makemigrations')
print('1')
django.setup()
management.call_command('migrate', app_label='client', database=databasename, interactive=False)
print('2')
return "success"
except Exception as e:
print(e.args[0])
return "failure"
但是当我在前端调用此方法时,终端会显示
0
未检测到任何变化
1
要执行的操作:
应用所有迁移:客户端
正在运行的迁移:
正在应用client.0001_initial ...确定
正在执行系统检查...
成功标签“ 2”从不显示,并且不显示任何错误消息。 似乎该进程已被终止,并且此命令之后的每个命令都将不会执行。
答案 0 :(得分:0)
我可能需要更多代码来检查,但是看来您是在不属于类的def上调用self的。我不确定您使用的是哪种Django版本,但是将skip_checks=True
添加到call_command中是否可以解决此问题,因为它似乎挂在系统检查上。
import os
import django
from django.core import management
def runmigrate(databasename):
try:
print('0')
os.chdir(os.getcwd())
management.call_command('makemigrations')
print('1')
django.setup()
management.call_command('migrate', app_label='client', database=databasename, interactive=False, skip_checks=True)
print('2')
return "success"
except Exception as e:
print(e.args[0])
return "failure"