我不确定这是否可能,但是示例代码如下:
我相信两个示例类代表多对一关系:
class Book(Base):
__tablename__ = 'book'
id = Column(Integer, primary_key=True)
name = Column(String(100))
status_id = Column(ForeignKey(u'status.id'))
status = relationship(u'Status', back_populates="books")
class Status(Base):
__tablename__ = 'status'
id = Column(Integer, primary_key=True)
name = Column(String(50))
books = relationship("Book", back_populates="status")
在状态表中,我有如下记录:
+----+--------------+
| id | name |
+----+--------------+
| 1 | draft |
| 2 | in progress |
| 3 | under review |
| 4 | finished |
+----+--------------+
这里是问题,有什么办法可以创建像这样的书:
book = Book()
book.name = "Relationships in SQL"
book.status.name = "finished"
在创建全新的Book记录时,“ status”属性为“无”,因此这是不可能的。我试图偷偷摸摸,并这样做:
book = Book()
book.name = "Relationships in SQL"
book.status = Status(name="finished")
但是,正如我期望的那样,这在状态表中创建了一个全新的条目。
我要实现的目的是创建一本书,而不必先从“状态”中查找正确的ID。
如果这不可能,我可以忍受,但我只想知道这两种方式。我似乎找不到与此情况相关的任何文档。