我有以下关系:acourse
有许多course_instances
,每个course_instance
都属于asemester
以下是一组大大简化的模型:
class Course(db.Model):
__tablename__ = "courses"
id = Column(Integer, primary_key=True)
course_instances = relationship("CourseInstance", back_populates="course")
class CourseInstance(db.Model):
__tablename__ = "course_instances"
id = Column(Integer, primary_key=True)
course_id = Column(Integer, ForeignKey("courses.id"))
semester_id = Column(Integer, ForeignKey("semesters.id"))
course = relationship("Course", back_populates="course_instances")
semester = relationship("Semester", back_populates="course_instances")
class Semester(db.Model):
__tablename__ = "semesters"
id = Column(Integer, primary_key=True)
sort_ix = Column(Integer)
course_instances = relationship("CourseInstance", back_populates="semester")
我经常在什么时候查询课程,并用joinedload/contains_eager/selectinload
包含所有实例。这些实例应始终按照每个实例学期的sort_ix
列进行排序
有没有办法在课程模型级别指定此默认顺序?大概是这样的:
course_instances = relationship(
"CourseInstance",
back_populates="course",
order_by="CourseInstance.semester.sort_ix"
)
我唯一能想到的就是在CourseInstance
中添加一个重复的列,比如semester_sort_ix
有点像一个具有不同关系集的this issue的dup。以下是解决方案:
相关问题 更多 >
编程相关推荐