2011-10-28 8 views
0

ドキュメントの例を使用して、私は次のコードを持っています。私が追加しようとすると、私はエラーを取得する:SQLAlchemyで多対1の関係の子を参照するには?

AttributeError: 'NoneType' object has no attribute 'append'  

を明らかにしてもparent.childがNoneTypeであるappendを使用せずに。私はこの関係をどのように働かせるのか分かりません。

Base = declarative_base() 

class Parent(Base): 
    __tablename__ = 'parent' 
    id = Column(Integer, primary_key=True) 
    child_id = Column(Integer, ForeignKey('child.id')) 
    child = relationship("Child", backref="parents") 


class Child(Base): 
    __tablename__ = 'child' 
    id = Column(Integer, primary_key=True) 

from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 

engine = create_engine("mysql://localhost/test", echo=False) 
Session = sessionmaker(bind=engine) 
session = Session() 

metadata = Base.metadata 
metadata.drop_all(engine) 
metadata.create_all(engine) 

parent = Parent() 
child = Child() 
parent.child.append(child) 

答えて

2

親が1つの子を持つことができ、子が多くの親を持つことができるように、多対1の関係を設定します。それはあなたが意図した方法です場合は、あなただけのような子を設定することができますので、:これはあなたが意図した方法ではない場合

child.parents.append(parent) 

、:

parent.child = child 

子は、しかし、そのように親を追加することができます親が複数対の関係を設定したり、多対1の方向を切り替えることで、複数の子供を持つことができるように、関係を切り替える必要があります。

+0

ありがとうございます、多くの人が、私が欲しいものです。それを今試みている。 – esac

関連する問題