2016-11-29 25 views
0

Djangoのシェルを経由して、次のコマンドを実行している:Djangoのエラー: " 'フィールドリスト' で不明な列 'categorytree.id'"

OperationalError: (1054, "Unknown column 'categorytree.id' in 'field list'")

from myApp.models import * 
print Categorytree.objects.all() 

は、私は、このエラーメッセージが表示されます。これは私のモデルの外観です:

class Categorytree(models.Model): 
    level = models.IntegerField(db_column='Level') # Field name made lowercase. 
    categorynode_idcategorynode = models.ForeignKey(Categorynode, models.DO_NOTHING, db_column='CategoryNode_idCategoryNode') # Field name made lowercase. 
    categorynode_idancestorcategorynode = models.ForeignKey(Categorynode, models.DO_NOTHING, db_column='CategoryNode_idAncestorCategoryNode', related_name='+') # Field name made lowercase. 

    class Meta: 
     managed = False 
     db_table = 'categorytree' 
     unique_together = (('categorynode_idcategorynode', 'categorynode_idancestorcategorynode'),) 

プライマリキーを持っておらず、持ってはいけませんが、Djangoはプライマリキー.idフィールドがあると思います。

+1

主キーが必要です。 –

+0

対応するMySQLデータベース設計では、そのテーブルに主キーがあるべきではありません。 models.pyにそれを追加するのは正しいですか? – r00flr00fl

答えて

2

Django docsを引用すると:あなたは主キーなしでテーブルにアクセスする必要がある場合は

Each model requires exactly one field to have primary_key=True (either explicitly declared or automatically added).

は、あなたがSQLAlchemyのように、いくつかの他のツールを採用する必要があります。

+0

Djangoが私のケースに自動的に追加しないのはなぜですか? – r00flr00fl

+0

ああ、対応するMySQLデータベーステーブルにも、主キー列が追加されている必要がありますか? – r00flr00fl

+0

Djangoは実際にドキュメントを追加してみます。「デフォルトでは、Djangoは各モデルに 'id = models.AutoField(primary_key = True)' "というフィールドを与えます。しかし、 'id'はテーブルスキーマにないので、あなたが見るエラーを投げる。 –

関連する問題