2017-02-03 3 views
0

У меня есть столовые, в которых пользователь хранит номера. Каждый номер имеет внешний ключ "users_id", поэтому я знаю, какая комната принадлежит этому пользователю.Python Flask SQLalchemy подсчитывает строки определенного пользователя

Мне нужно подсчитать все номера каждого пользователя и отобразить номер для панели управления администратора.

У меня есть решение, но оно не подходит.

Я делаю два запроса для всех помещений и всех пользователей:

users = db_session.query(User).order_by(desc('id')) 

rooms = db_session.query(Zimmer) 

В моих Jinja2 Я изготовление петель, чтобы проверить, какие номера принадлежит к которым пользователю. Я создаю список и добавить номера там для каждого пользователя, а затем я использую метод подсчета jinja2 на переменном список, я также должен сделать переменное на добавлении display: none;:

{% for user in users %} 
    {% set total_rooms = [] %} 
    {% for room in rooms %} 
    {% if room.users_id == user.id %} 
     <span class="make-display-none"> 
     {{ total_rooms.append(room) }} 
     </span> 
    {% endif %} 
    {% endfor %} 
    <p> Anzahl Objekte: {{ total_rooms|count }} </p>  
{% endfor %} 

Это работает, но я чувствую, что должно быть лучшим решением!

ответ

2

Вы должны использовать соединение, а затем подсчитать. Сначала соедините таблицу пользователей с таблицей комнат, используя ключ userId. Затем, когда у вас есть таблицы joined, сделайте подсчет по всем строкам.

Вы можете найти соединения в SQLAlchemy here.

Смежные вопросы