django call_command migration似乎会杀死进程

时间:2018-07-03 16:47:06

标签: python django

我是在我的视图中执行的。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”从不显示,并且不显示任何错误消息。 似乎该进程已被终止,并且此命令之后的每个命令都将不会执行。

1 个答案:

答案 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"