2016-04-28 10 views
1

現在、Dockerインスタンス内のDjango 1.5.2プロジェクトで、別のDockerインスタンスのmysqlデータベースと会話しています。私は、接続が必要な2つのテーブルを指す2つの外部キーを含む中間テーブルを作成して、2つのテーブル間の多対多関係を作成しようとしています。問題は、私がpython manage.py syncdbを実行し、次のエラーを端末に吐き出すときに発生します:NameError: name 'QueryString' is not defined。私のモデルではQueryStringが明確に定義されています。ここでDjangoモデルの 'QueryString' BaseObjectを認識できない外部キー

私のモデルは、それだけで罰金Tagモデルを認識している

class Tag(models.Model): 
    name = models.CharField(max_length=100) 

class QueryStringTab(models.Model): 
    tag = models.ForeignKey(Tag, related_name='querystringtab') 
    querystring = models.ForeignKey(QueryString, related_name='querystringtab') 

class QueryString(BaseObject): 
    """ 
    Query string holds an SQL statement and query properties for execution 
    """ 

    server_id = models.IntegerField() 
    schema = models.CharField(max_length=255, blank=True) 
    query = models.CharField(max_length=60000) 
    variables = models.TextField(blank=True) 
    created_by = models.ForeignKey(User, related_name='queries_created') 
    updated_by = models.ForeignKey(User, related_name='queries_last_edited') 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField() 
    touched_by = models.CharField(max_length=1000) 
    config = models.TextField(blank=True) 
    runs_started = models.IntegerField(default=0) 
    runs_completed = models.IntegerField(default=0) 
    runs_completed_duration = models.IntegerField(default=0) # total number of seconds spent running this query to completion 
    formats = "pretty_html html json prettyjson csv excel tableau".split() 

注目すべきポイント...
1)...です。
2)それはそれは成功し、誰もが私が間違っているのことを明らかに何かを見つけることができますmysqlデータベース

Tagテーブルを作成しています)QueryStringBaseObject
3であるという事実とは何かを持ってもらえますか?

+0

私が知っているところから、Djangoの自動生成データベースアクセスAPIを使用するには、models.Modelクラスを使用する必要があります。だから私は#2の本能が正しいと思う)。 –

+1

'BaseObject'クラスとは何ですか? –

答えて

1

QueryStringTabの宣言は、QueryStringTabの宣言の前です。したがって、Pythonが最初のものを評価するとき、それはまだ2番目の定義を見ていないので、NameErrorを報告します。

querystring = models.ForeignKey('QueryString', related_name='querystringtab') 

それとも、あなたは、単に最後までQueryStringTabの定義を移動することができ:

Djangoは、あなたがこのようなケースでは、クラスのオブジェクトよりも、文字列のターゲットを使用することができます。

+0

ありがとう!私はちょうどJSからPythonに切り替えて、基本的に少し錆びました。あなたは私のPMによって噛まれることから私を救ったかもしれません。ご多幸を祈る! –

関連する問題