2017-04-25 17 views
0

Djangoを使用して、各コミュニティの総ロット数を出力しようとしています。djangoマークアップを使用して各オブジェクト内のオブジェクトの総数を取得する

コミュニティには複数のロットがあり、複数のコミュニティがあります。ここに私が得ているものの例があります:

Total lots: 99. 

このコミュニティは2つのロットしか持っていません。それらの間に合計9ロットの4つのコミュニティがあります。

モデルとビューは正しいようです。私が紛失しているフィルターがあるか、これを書いて別の正しい結果を得る方法がありますか?

{% if community.is_active %} 
<a class="panel-link" href="{% url 'community-detail' pk=community.id %}" %}> 
    <div class="col-md-6 community_col"> 
     <div class="community_box"> 
      <div class="row"> 
       <br> 
       <div class="col-md-4 community_img"> 
        <img src="/media/{{ community.logo }}" alt=""> 
       </div> 
       <div class="col-md-7 col-md-offset-1"> 
        <h1 style="margin-bottom: -10px; margin-top: -15px;"><small>{{ community.name }}</small></h1> 
        <h4>{{ community.city }}, {{ community.state }}</h4> 
        <h6>Total lots: {% for lot in community.lot_set.all %}{{ lots|length }}{% endfor %}</h6> 
        <h6>Total Active lots: </h6> 
        <h6>Total Sold lots: </h6> 
        <h6>Total Inactive lots: </h6> 
       </div> 
      </div> 
     </div> 
    </div> 
</a> 
{% endif %} 
{% endfor %} 

答えて

2

このロジック:各ロットオブジェクトを介して

{% for lot in community.lot_set.all %}{{ lots|length }}{% endfor %} 

反復します。あなたは私が知る限り、文脈の変数ではないlotsの長さを取る。オブジェクトを数えたいだけの場合:

{{ community.lot_set.count }} 

となります。

:しかし今後

は、あなたが効率的に使用すると、クエリセットに注釈を付けると、データベースにこのカウントを行うことになっているはずです、販売、アクティブ非アクティブなどのカウントを取得したいするつもりだ、とこれを行うにはhttps://docs.djangoproject.com/en/1.11/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset

+0

ありがとうございました。それは確かにトリックでした。あなたが述べたように進んでいるので、クエリーセットに注釈を付けることによって、データベース内のこれらのカウントの残りの部分を論理的に行うように見えます。私はそれをどのようにして展開できますか?モデルやビューでは? –

関連する問題