【发布时间】:2017-10-12 04:48:50
【问题描述】:
是否可以从 python 脚本进行迁移?
我正在尝试在没有 shell 但我可以使用 python 脚本的 Heliohost 上使用 django。
something like
from django import shell
shell.main(['mysite/manage.py', 'migrate'])
编辑
使用来自@Shadow 的输入,我尝试将此代码放入views.py 文件中
def migrate(request):
django.setup()
from django.core.management import call_command
call_command("migrate", interactive=False)
return HttpResponse("Final Migration Successful")
然后访问映射到 migrate 的 url 返回“Final Migration Success”
然后我尝试了类似的数据库
from .models import Question
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
给我错误:
(1146, "Table 'usr_mydb.polls_question' doesn't exist")
来自 Django 教程:
绕过manage.py
如果您不想使用 manage.py,没问题。只需将 DJANGO_SETTINGS_MODULE 环境变量设置为 mysite.settings,启动一个普通的 Python shell,然后设置 Django:
>>> import django
>>> django.setup()
如果这引发 AttributeError,您可能使用的 Django 版本与本教程版本不匹配。你会想要切换到较旧的教程或较新的 Django 版本。
您必须从 manage.py 所在的同一目录运行 python,或者确保该目录位于 Python 路径上,以便 import mysite 起作用。
有关所有这些的更多信息,请参阅 django-admin 文档。
但是如何使用django.setup() 来做python manage.py <command> 在文档中没有。
【问题讨论】: