2017-03-12 13 views
0

を修正する方法: は、私はこのエラーを得続けるNoForeignKeysError

"sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Parent.children - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression."

私はSQLAlchemyのドキュメントのガイドに従っても、私はまだ、このエラーを取得しています。

class Parent(db.Model): 
    __tablename__ = 'parent' 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.Text) #maybe add unique 
    children = db.relationship('Child', backref='parent', cascade = "all, delete-orphan", lazy='dynamic') 

def __init__(self, name): 
    self.name = name 

def add(self, parent): 
    db.session.add(parent) 
    return session_commit() 


class Child(db.Model): 
    __tablename__ = 'child' 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.Text) 
    parent_id = db.Column(db.Integer, db.ForeignKey('Parent.id')) 

def __init__(self, name, parent): 
    self.name = name 
    self.parent_id = parent 

def add(self, child): 
    db.session.add(child) 
    return session_commit() 

オンラインのガイドに基づいて私には正しいように見えますが、関係の問題を見つけることができないようです。さらに

parent_id = db.Column(db.Integer, db.ForeignKey('Parent.id')) 

は、親がテーブル名がある

parent_id = db.Column(db.Integer, db.ForeignKey('parent.id')) 

すべきではありませんか? 「関係の親が存在しない」というメッセージが表示されたらエラーが表示されます

答えて

0

親モデルのテーブル名はtablename = "parent"に設定されています。したがって、parent_idの定義は、parent_id = db.Column(db.Integer()、db.ForeignKey( "parent.id"))でなければなりません。子モデルでparentという名前の関係を定義したり、親モデルの子関係の外部キーを割り当てることができます。子関係の定義にはforeign_keysの値を設定します。

関連する問題