2017-05-21 12 views
1

私はdjangoアプリケーションに関連するいくつかのpythonスクリプトを実行しています。 私は手動でいくつかのpythonスクリプトを含むが、./manage.py startapp scriptsを使って作られていないフォルダ(scriptsという名前)を作りました。このフォルダに加えてmodelsapp djangoアプリ(私のモデルが含まれています)とprojectフォルダにはsettings.pyurls.pyが含まれています。Django:モデルをグローバルにインポートすることができません

スクリプトを実行するために./manage.py shell < scripts/script.pyを実行します。

は今こここれはかなりうまく機能し、私のscripts.py

from modelsapp.models import * 
print(Room.objects.all()) 

のサンプルコードです。次に、2番目のケースを考えてみましょう。私は今ちょうど./manage.py shellを実行し、次のcommands-

>>>from modelsapp.models import * 
>>>def init(): 
... print(Room.objects.all()) 
... 
>>>init() 

また、これはかなりうまく機能置きます。しかし、今、最初のケースでファイルを介して上記のコードを実行すると、NameError: name 'Room' is not defined

私が今インポートしたモデルクラスは、アクセシビリティの機能の中にないようです。 この動作は少し奇妙です。

助けてください。私が何か言及しなかった場合は、以下のコメントをしてください。

編集:これは少し奇妙な行動であり、それへの答えを見つけることができませんので、私はちょうど今のように行う作業を取得するためのパラメータとして機能init()に直接クラスRoomを渡すつもりです。

+0

「project.modelsapp.models import *」または「modelsapp.models from Room'」についてはどうですか? – ozgur

+0

最初にインポートエラーを返します –

+0

第2のものは同じことを言います。 –

答えて

0

あなたはDjangoのシェルを実行した後、あなたがあなたのスクリプトを実行することができます:あなたは(Pythonのmanage.pyシェルを使用していない)通常のPythonシェルでそれを実行したい場合は、あなたがしなければならない

>>>execfile('filename.py') 

import django 
import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project(name.settings") 
django.setup() 
+0

これはどのように動作するのですか?それでも問題は、なぜ私のメソッドで動作しないのですか? –

+0

どのようにファイルを正確に実行しますか? – Mani

+0

私は説明の2番目の段落でそれを述べました。 –

関連する問題