Как сослаться на потомка отношения многих к одному в SQLAlchemy? - PullRequest
0 голосов
/ 28 октября 2011

Используя пример из документации, у меня есть следующий код. Когда я пытаюсь добавить, я получаю сообщение об ошибке:

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

Очевидно, что даже без использования append parent.child имеет NoneType. Я не знаю, как работать с этими отношениями.

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)

1 Ответ

2 голосов
/ 28 октября 2011

Вы устанавливаете отношение «многие к одному», чтобы у родителя мог быть один ребенок, а у ребенка - много родителей. Если это так, как вы хотели, вы можете просто настроить ребенка следующим образом:

parent.child = child

Однако ребенок может добавить родителя так:

child.parents.append(parent)

Если это не так, как вы хотели, вам придется изменить отношения, чтобы родители могли иметь нескольких детей, установив отношение «многие ко многим» или переключив направление «многие ко многим».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...