0

我决定创建一个名为 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 脚本的新手。谢谢你的帮助。

4

3 回答 3

3

你应该看看创建一个夹具来填充你的数据库https://docs.djangoproject.com/en/dev/howto/initial-data/

于 2013-02-28T17:16:50.900 回答
2

您需要明确导入用户。包django和其他一些东西会自动导入,但不是您可能想要的所有东西。

另外,为了避免不知道要导入什么,还有管理命令。这将利用您的 Django 和 Python。您可以稍后学习 shell 脚本。

于 2013-02-28T17:22:28.503 回答
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 = #! topic/django-users/WrVp1DDFrX8 希望这会有所帮助。

于 2013-02-28T17:22:20.870 回答