[英]How can I run django shell commands from a bash script
我决定不再创建表,而是重新创建它们并在我的开发环境中填充数据,而是决定创建一个名为reset_db
的bash脚本来为我执行此操作。 我得到它重击表,重新创建它们。 但是它无法用Django orm中的数据填充表。
我尝试通过从脚本调用django shell来执行此操作,然后运行ORM命令填充表。 但是,似乎django 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脚本都是陌生的。 谢谢你的帮助。
您应该看一下创建一个夹具来填充数据库https://docs.djangoproject.com/en/dev/howto/initial-data/
您需要显式导入用户。 django
软件包和其他一些东西会自动导入,但是不会自动导入。
另外,为了避免不知道要导入的内容,还有一些管理命令 。 这将利用您的Django和Python。 您可以稍后学习Shell脚本。
在错误中清楚地看到的未被识别为模型类django-admin用户django-admin也许您缺少一些导入或类似的东西
from django.db import models
User import from django.contrib.auth.models
,顺便说一下
User.objects.filter u1 = (pk = 5)
我想我放
u1 = User.objects.filter (pk = 5). First ()
在末尾。 无论如何,在这里我留下一些可能有用的线程, https : //docs.djangoproject.com/en/dev/ref/django-admin/ http://www.stackoverflow.com/questions/6197256/django-user -model-fields-at-adminmodel https://groups.google.com/forum/?fromgroups =#! topic / django-users / WrVp1DDFrX8希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.