我决定创建一个名为 bash 脚本来为我执行此操作,而不是反复删除我的表、重新创建它们并在我的开发环境中填充数据reset_db
。我得到它来敲打桌子,重新创建它们。但它无法使用来自 django orm 的数据填充表。
我尝试通过从脚本调用 django shell 然后运行 ORM 命令来填充我的表来做到这一点。但似乎 django shell 命令没有运行。
我尝试在 shell 中手动/直接运行 django orm 命令,它们运行良好,但不能从 bash 脚本中运行。
我得到的错误是:
NameError: name 'User' is not defined
NameError: name 'u1' is not defined
NameError: name 'm' is not defined
这是我的脚本:
#!/bin/bash
set +e
RUN_ON_MYDB="psql -X -U user --set ON_ERROR_STOP=on --set AUTOCOMMIT=off rcamp1"
$RUN_ON_MYDB <<SQL # Whack tables
DROP TABLE rcamp_merchant CASCADE;
DROP TABLE rcamp_customer CASCADE;
DROP TABLE rcamp_point CASCADE;
DROP TABLE rcamp_order CASCADE;
DROP TABLE rcamp_custmetric CASCADE;
DROP TABLE rcamp_ordermetric CASCADE;
commit;
SQL
python manage.py syncdb # Recreate tables
python manage.py shell <<ORM # Start django shell. Problem starts here.
from rcamp.models import Customer, Merchant, Order, Point, CustMetric, OrderMetric
u1 = User.objects.filter(pk=5)
m = Merchant(u1, full_name="Bill Gates")
m
ORM
我是 django 和 shell 脚本的新手。谢谢你的帮助。