如何根据条件在烧瓶中的一对多关系中使用 order_by

时间:2021-06-16 19:46:27

标签: python flask sqlalchemy one-to-many

我有两个模型问题和答案的关系,我可以查询一个特定的问题,然后打印它的答案,但我想知道如何按其中一个列对答案进行排序

我阅读了很多 SO 问题,但他们在创建表格时定义了它,但我想根据条件对答案进行排序,votesdate 就像在 stackoverflow 上一样,

class Question(db.Model):
    sno = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    ans =  db.relationship("Answers",backref="owner")

class Answers(db.Model):
    ans_no = db.Column(db.Integer, primary_key=True)
    answer = db.Column(db.String(3000))
    votes = db.Column(db.Integer(),default=0)
    date = db.Column(db.String(15))
    ques_id =  db.Column(db.Integer,db.ForeignKey("question.sno"))

我想要类似的东西

q1 = Question.query.filter_by(sno=1).first()
q1.ans // gives me [<Answers1>,<Answers3>] so on 

我如何根据投票数或日期订购 q1.ans。任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

如果您总是希望如此,只需将 order_by=date 添加到您的关系定义中。

否则,只需执行单独的查询:

sorted_anwers = Answer.query.where(with_parent(q1, Answer.owner)).order_by(Answer.votes.desc())