我想创建一个可以执行以下操作的脚本(.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代码,但没有成功。我想这很容易做,但我不知道怎么做。。
谢谢。
我想最好的选择是编写一个自定义管理命令。
然后您的脚本可能看起来像:
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()
或者您可以尝试以下单行解决方案:
echo "from myapp.scenarios import *; reset_demo_data(); exit()" | python manage.py shell
您可以添加此行来替换Shell激活行。