0

テンプレートで、グループをカテゴリ別にヘッダーとして表示し、その下にそのグループのすべての値をカテゴリ別に表示したいと考えています。たとえば、私のテーブルは次のようになります。

['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 %}
4

1 に答える 1

0

テンプレート (department.html) は、すべての学生をリストする場所です。次のようなものが必要です。

{% if students %}
    {% for student in students %}
        <p>{{ student.NAME_FIELD }}</p>
        {{ student.DEPARTMENT_FIELD}}
    {% endfor %}
{% else %}
    No student are available.
{% endif %}

NAME_FIELD と DEPARTMENT_FIELD は、model.py で宣言したフィールドです。

于 2016-09-08T17:34:57.520 に答える