0

オブジェクトのカウント、結果のフィルタリング、最終的にテンプレートへの挿入について質問があります。

Models.py:

class Fms(models.Model):
    department = models.CharField(max_length=255, verbose_name='Department')
    date = models.DateField()

Views.py:

def raport(request):
    raport = Fms.objects.filter(date__year='2013').extra(select={'month': "EXTRACT(month FROM date)"}).values('month', 'department').annotate(Count('department'))
    return render_to_response ('Fms/raport.html',
                               {'raport': raport},
                               context_instance=RequestContext(request))

問題は、次のような表に結果を表示する方法です。

結果

または、少なくとも毎月表示し、その月に部門が何回言及されたかを表示します。

4

2 に答える 2

1

にキーワードを渡さない場合annotateは、フィールドの名前が__count追加されて使用されます。https://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-querysetテンプレートでそれにアクセスするには、次のようにします。

<table>
    <thead>
        <tr>
            <th>Month</th>
            <th>Count</th>
        </tr>
    </thead>
    <tbody>
        {% for item in raport %}
            <tr>
                <td>{{ item.month }}</td>
                <td>{{ item.department__count }}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

横向きに表示するには...

<table>
    <thead>
        <tr>
            {% for item in raport %}
                <th>{{ item.month }}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        <tr>
            {% for item in raport %}
                <td>{{ item.department__count }}</td>
            {% endfor %}
        </tr>
    </tbody>
</table>
于 2013-04-10T17:36:15.517 に答える
1

次のようなものが必要です:

{% for each_model in raport %}
    {{each_model.department}}
    {{each_model.date}}
{% endfor %}
于 2013-04-10T16:35:01.980 に答える