我没有重复删除我的表,重新创建它们并在我的开发环境中填充数据,而是决定创建一个名为reset_db
的bash脚本来为我执行此操作。我得到它来敲打桌子,重新创建它们。但它无法使用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脚本的新手。谢谢你的帮助。
答案 0 :(得分:2)
您应该考虑创建一个夹具来填充您的数据库https://docs.djangoproject.com/en/dev/howto/initial-data/
答案 1 :(得分:2)
您需要明确导入用户。 django
包和其他一些内容会自动导入,但不是您想要的所有内容。
另外,为避免不知道要导入的内容,有management commands。这将利用您的Django和Python。您可以稍后学习shell脚本。
答案 2 :(得分:1)
在你的错误中清楚地看到不被认为是模型类用户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 =#!话题/ Django的用户/ WrVp1DDFrX8 希望这会有所帮助。