Могу ли я указать порядок внешних отношений SQLAlchemy в шаблоне Jinja2? - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть следующие две модели:

class Company(db.Model):
    __tablename__ = "company"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), index=True, unique=True, nullable=False)
    comments = db.relationship("Comment", backref="comment", lazy=True)


class Comment(db.Model):
    __tablename__ = "comment"
    id = db.Column(db.Integer, primary_key=True)
    company_id = db.Column(db.Integer, db.ForeignKey("company.id"), nullable=False)
    body = db.Column(db.Text)
    created_datetime = db.Column(
        db.TIMESTAMP(timezone=True), default=datetime.datetime.now
    )

И следующий шаблон Jinja2:

{% for comment in company.comments %}
    <div><span>{{ comment.created_datetime }}:</span> {{comment.body}}</div>
{% endfor %}

Я бы хотел заказать комментарии по create_datetime desc.

Могу ли я сделать это в шаблоне Jinja2?

1 Ответ

0 голосов
/ 24 декабря 2018

В Jinja2:

По возрастанию

{% for comment in company.comments|sort(attribute='created_datetime') %}
   <div><span>{{ comment.created_datetime }}:</span> {{comment.body}}</div>
{% endfor %}

По убыванию

{% for comment in company.comments|sort(attribute='created_datetime', reverse = True) %}
   <div><span>{{ comment.created_datetime }}:</span> {{comment.body}}</div>
{% endfor %}

Или выполните сортировку в Python перед передачей company в шаблон:

@app.route('/')
def index():
    # e.g company 10
    company = Company.query.join(Company.comments).filter(Company.id == 10).order_by(Comment.created_datetime.desc()).first_or_404()
    render_template('index.html', company=company)
...