我写了两个这样的模型:

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)

我想知道有没有更好的办法?谢谢。

最佳答案

好吧,你的密码没问题。但是,您可以使用.append()方法稍微简化add_comment:

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

这样就无需设置comment.itemtype,也无需手动将新对象添加到DBSession。

关于python - 如何在SQLAlchemy中将对象添加到多对一关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12344664/

10-13 01:56