Python Ошибка sqlalchemy filter_by "Ошибка индекса: индекс списка вне диапазона" - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь перечислить упражнения в определенной группе мышц c. Однако, когда я щелкаю по идентификатору группы передачи изображений, я получаю ошибку «IndexError: список индексов вне диапазона».

Мышечная группа Html (mgroup. html)

{% extends "base.html" %}

{% block app_content %}
<div class="row">
  <div class="col-md-2">
  </div>
    <div class="col-md-8">
      {% for group in groups %}
      <a href="{{ url_for('exercises.exig', id=group.id)}}">
      <img class="" src="{{ url_for('static', filename='ex_pic/' + group.gimage)}}" alt="" a width="350" height="250">
      </a>
      {% endfor %}
    </div>
</div>
{% endblock %}

Упражнения в мышечной группе Html (exig. html)

{% extends "base.html" %}
{% block app_content %}
  <div class="col-md-5">
    {% for e in ex %}
    <p>{{ e }}</p>
    {% endfor %}
  </div>
{% endblock %}

rout.py

@exercises.route('/muscle_groups')
def mgroup():
    groups = Musclegroup.query.order_by(Musclegroup.group.asc())
    return render_template('exercises/mgroup.html', title='Muscle Groups', groups=groups)


@exercises.route('/exercises/<id>', methods=['GET', 'POST'])
def exig(id):
    ex = [e.exercises.order_by(Exercises.all()) for e in Musclegroup.query.filter_by(group=id)][0]
    return render_template('exercises/exig.html', title='Exercises', ex=ex)

1 Ответ

0 голосов
/ 04 апреля 2020

В соответствии с ошибкой, список, который вы строите с помощью [e.exercises.order_by(Exercises.all()) for e in Musclegroup.query.filter_by(group=id)][0], кажется пустым, так что вы пытаетесь проиндексировать в [][0], что выдает ошибку. Это связано с тем, что метод filter_by возвращает объект BaseQuery, а не фактические совпадения, вам необходимо добавить вызов all(), чтобы получить результаты:

ex = [e.exercises.order_by(Exercises.all()) for e in Musclegroup.query.filter_by(group=id).all()][0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...