如何通过Bash脚本将模型查询传递到Django Shell?

时间:2017-01-04 21:08:15

标签: python django bash shell

我正在编写一个startup.sh脚本,以便在创建docker容器时运行。

#!/bin/bash
python manage.py runserver
python manage.py makemigrations accounts
python manage.py migrate
python manage.py check_permissions    
python manage.py cities --import=country --force

*python manage.py shell | from cities.models import * Country.objects.all().exclude(name='United States").delete()*

python manage.py cities --import=cities
python manage.py cities --import=postal_code

我猜测有问题的行是不正确的,在bash脚本中执行此操作的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

在shell脚本文件中包含django代码并不是一个好主意。最好制作python文件并将这些代码放入其中并执行:

python manage.py shell < script.py

或者更好,写一个django management command。通过这种方式,您可以在同一个项目/回购中跟踪您的代码,当他们看到这个时,人们就会变得更加困惑。

答案 1 :(得分:1)

使用heredoc:

python manage.py shell <<'EOF'
from cities.models import *
Country.objects.all().exclude(name='United States').delete()
EOF