如何编写django shell操作脚本?

时间:2014-11-05 12:49:53

标签: python django bash shell unix

我想创建一个可以执行以下操作的脚本(.sh或python,不重要):

heroku pg:reset DATABASE_URL
heroku run python manage.py migrate
heroku run python manage.py shell
> from myapp.scenarios import *; reset_demo_data(); exit()

第1行到第3行是UNIX命令,但第4行是在打开的Django shell中执行的python。

我尝试使用|>来“注入”命令中的python代码,但没有任何效果。 我想这很容易,但我无法弄清楚如何......

感谢。

2 个答案:

答案 0 :(得分:3)

我想最好的选择就是写一个custom management command

您的脚本可能如下所示:

heroku pg:reset DATABASE_URL
heroku run python manage.py migrate
heroku run python manage.py shell
heroku run python manage.py reset_demo

当管理命令类似于:

from django.core.management.base import BaseCommand
from myapp.scenarios import *

class Command(BaseCommand):
    def handle(self, *args, **options):
        reset_demo_data()

答案 1 :(得分:1)

或者您可以尝试这一行解决方案:

echo "from myapp.scenarios import *; reset_demo_data(); exit()" | python manage.py shell

您可以添加此行替换Shell激活行。