[英]Cross reference while defining FK and children relationships SQLAlchemy
Class Bed
id
Class Guest
id
bed_assignments = relationship(
primaryjoin=(
"and_(Guest.id"
"==foreign(BedAssignment.guest_id),"
"BedAssignment.bed_status=='occupied')"
),
)
Class BedAssignment
FK Guest
FK Bed
每個 class 都在一個文件中,並在 BedAssignment class 中為 FK 目的引用 Guest,在為關系目的引用 BedAssignment 旁邊創建一個交叉引用。
我嘗試使用 FK 或關系引用的文本版本,類似於: Column(Integer, ForeignKey("bed.id")
但它似乎是一種解決方法,因為它會停止生成錯誤尋找參考的 alembic 腳本。
在這種關系 model 的情況下如何解決交叉引用?
由於您的關系來自關聯表 + 具有輔助連接規范,因此請按如下方式構建您的關系:
bed_assignments = relationship(
"Bed", #class name of the table
secondary = "BedAssignment", #table name of the association table
# Consider using exact tablenames for your join statement...
primaryjoin = """and_(
Guest.id==BedAssignment.guest_id,
BedAssignment.bed_status=='occupied'
)""",
backref=backref("Bed", lazy="dynamic"), # if you want the relationship to be observable on the other class... (Guests as children of Beds)
lazy='dynamic', #only load as needed
post_update=True, # this allows updating of dependent rows without collisions or cyclical dependencies
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.