テンプレートで、グループをカテゴリ別にヘッダーとして表示し、その下にそのグループのすべての値をカテゴリ別に表示したいと考えています。たとえば、私のテーブルは次のようになります。
['John','Physics']
['Jim','Physics']
['Sam','Biology']
['Sarah','Biology']
そして、テンプレートにこれを出力させたい:
物理
ジョン
ジム
生物学
サム
サラ
通常は SQL でこれを行うため、veiws.py に何を入力すればよいかわかりません --> 最初にカテゴリ別にグループ化し、次にそのカテゴリのすべての結果を返します。
私の veiws.py とテンプレートは、これを達成するためにどのように見えるでしょうか? ありがとう。
私の現在のveiws.py:
def department(request):
students = Students.objects.all().order_by('department')
return render(request, 'department.html', {
'students':students,
})
これが私のmodel.pyです
class Mentors(models.Model):
name = models.CharField(max_length=100)
degree = models.CharField(max_length=100)
department = models.CharField(max_length=100)
そして私のテンプレート:
{% if mentors %}
<div class="row">
{% for mentor in mentors %}
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
<h3>{{ mentor.department }}</h3>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
<div class="thumbnail">
<img src="{{ mentor.image.url }}" class="img-thumbnail">
<div class="caption">
<h4 class="text-center">{{ mentor.name }}, {{ mentor.degree }}</h4>
<p class="text-center"><small>{{ mentor.department }}</small></p>
</div>
</div>
</div>
{% endfor%}
</div><!-- /.end row -->
{% endif %}