0

テーブルを繰り返し削除し、それらを再作成して、開発環境にデータを入力する代わりに、これを行うという名前のbashスクリプトを作成することにしreset_dbました。私はテーブルを叩き、それらを再作成しました。しかし、django orm からのデータをテーブルに取り込むことはできません。

これを行うには、スクリプトから django シェルを呼び出し、ORM コマンドを実行してテーブルにデータを入力します。しかし、django シェル コマンドが実行されていないようです。

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とシェルスクリプトの両方が初めてです。ご協力いただきありがとうございます。

4

3 に答える 3

3

データベースにデータを入力するためのフィクスチャの作成を検討する必要がありますhttps://docs.djangoproject.com/en/dev/howto/initial-data/

于 2013-02-28T17:16:50.900 に答える
2

Userを明示的にインポートする必要があります。パッケージと他のdjangoいくつかのものは自動的にインポートされますが、必要なものがすべてではありません。

また、何をインポートするかわからないようにするために、管理コマンドがあります。これにより、DjangoとPythonが活用されます。シェルスクリプトは後で学ぶことができます。

于 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 に答える