如何在SQLAlchemy中将对象添加到多对一关系?

时间:2012-09-10 02:15:18

标签: python sqlalchemy pyramid

我写了两个这样的模型:

class ItemType(Base, DBBase):
    __tablename__ = 'itemtypes'

    id = Column(Integer, primary_key = True)
    name = Column(String), nullable = True)

    comments = relationship('ItemTypeComment')

class ItemTypeComment(Base, DBBase):
    __tablename__ = 'itemtypecomments'

    id = Column(Integer, primary_key = True)
    comment = Column(String), nullable = True)

    itemtype_id = Column(Integer, ForeignKey('itemtypes.id'), nullable = True)
    itemtype = relationship('ItemType')

在这里我们可以看到,一个ItemType可以有几个ItemTypeComments。现在我想为类ItemType添加一个方法,以便轻松添加注释。目前,我写道:

def add_comment(self, comment):
    comment = ItemTypeComment()
    comment.comment = comment
    comment.itemtype = self
    DBSession.add(comment)

我想知道有没有更好的方法呢?感谢。

1 个答案:

答案 0 :(得分:1)

嗯,你的代码没有错。但是,您可以使用.append()方法简化add_comment:

def add_comment(self, comment):
    comment = ItemTypeComment()
    self.comments.append(comment)

这样就不必设置comment.itemtype,也可以手动将新对象添加到DBSession中。