2017-02-03 8 views
0

私はテーブルを持っています。ユーザーの部屋を保存しています。各部屋には外部キー"users_id"があります。Python Flask SQLalchemy特定のユーザーの行数をカウントします

各ユーザーのすべての部屋を数え、管理ダッシュボードの番号を表示する必要があります。

私は解決策がありますが、正しくはないと感じています。私はすべての部屋と、すべてのユーザーのための2つのクエリ作っています

:私のJinja2のでは

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

rooms = db_session.query(Zimmer) 

を私は作りがどのユーザーに属している部屋をチェックしてループしています。私はリストを作成し、各ユーザーのためにそこに部屋を追加し、その後、私はリスト変数に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キーを使用してusersテーブルをroomsテーブルに結合します。その後、テーブルをjoinedにしたら、すべての行を数えます。

SQLAlchemy hereでジョインを見つけることができます。

関連する問題