[英]Ordering SQLAlchemy relationship by another field, not by primary key
我在金字塔应用程序中使用sqlalchemy的以下模型:
class Issue(base_iop):
__tablename__ = 'issues'
issueid = Column(BIGINT, primary_key=True, name="ISSUEID")
issuenum = Column(VARCHAR(20), name="ISSUENUM")
status = Column(VARCHAR(32), name="STATUS")
datetime = Column(TIMESTAMP, name="ISSUETIME")
class Related(base_iop):
__tablename__ = 'related'
relationid = Column(BIGINT, primary_key=True, name="ROWSTAMP")
parent_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'),name="RECORDKEY")
children_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'), name="RELATEDKEY")
issues = relationship(iop, foreign_keys=[child_num])
我能得到就好使用问题的相关问题:该issues
的相关表的属性:
for related in db.query(Issue).all()[0].issues:
print related.status
但是,我没有找到通过datetime
属性排序问题的解决方案。 如果Related
具有这样的datetime属性,则在关系中使用order_by应该非常简单:
class Issue(base_iop):
__tablename__ = 'issues'
issueid = Column(BIGINT, primary_key=True, name="ISSUEID")
issuenum = Column(VARCHAR(20), name="ISSUENUM")
status = Column(VARCHAR(32), name="STATUS")
datetime = Column(TIMESTAMP, name="ISSUETIME")
children = relationship("Related", foreign_keys="[Related.parent_num]", backref="parent", order_by="[Related.datetime]")
class Related(base_iop):
__tablename__ = 'related'
relationid = Column(BIGINT, primary_key=True, name="ROWSTAMP")
parent_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'),name="RECORDKEY")
children_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'), name="RELATEDKEY")
datetime = Column(TIMESTAMP, name="ISSUETIME")
issues = relationship(iop, foreign_keys=[child_num])
如何通过其他字段而不是像现在这样通过主键来排序相关问题?
关系接受关键字参数order_by来处理关系的默认顺序。 它应该是这样的:
issues = relationship(iop, foreign_keys=[child_num], order_by="Issue.datetime")
请注意,如果需要处理,则backref函数具有相同的关键字。
在这里您可以阅读更多信息: http : //docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html#building-a-relationship关于此主题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.