Python Django 2不同的模型字段项

Python Django 2不同的模型字段项,python,django,django-models,django-views,django-queryset,Python,Django,Django Models,Django Views,Django Queryset,我试图在模块的某个字段中获取不同项的列表,然后显示与该字段关联的所有项 例如,在学校管理系统中,有一个学校模块和一个学生模型。每个学生都有一个与之关联的颜色作为“颜色”字段。我想创建一个页面,页面列出学校中所有不同的颜色,然后在每个颜色下列出属于该颜色的学生列表 我会在视图中编写此函数吗 以下是我目前在views.py中看到的内容: class SchoolColorDetailView(DetailView): model=models.School template_name

我试图在模块的某个字段中获取不同项的列表,然后显示与该字段关联的所有项

例如,在学校管理系统中,有一个学校模块和一个学生模型。每个学生都有一个与之关联的颜色作为“颜色”字段。我想创建一个页面,页面列出学校中所有不同的颜色,然后在每个颜色下列出属于该颜色的学生列表

我会在视图中编写此函数吗

以下是我目前在views.py中看到的内容:

class SchoolColorDetailView(DetailView):
    model=models.School
    template_name='school_app/school_color_detail.html'

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['colors']=Student.objects.all().order_by('color').distinct('color')
这将给我一个所有颜色的列表(但不是按学校)。有没有办法只通过学校和所有与颜色相关的学生来获取颜色?我必须为此创建词典吗

任何帮助都将不胜感激

谢谢

更新:

以下是模型:

class School(models.Model):
    name = models.CharField(max_length=256)
    principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)


    def __str__(self):
        return self.name

    def get_absolute_url(self):
    return reverse("school_app:school_detail",kwargs={'pk':self.pk})


class Student(models.Model):
    name = models.CharField(max_length=256)
    color = models.CharField(max_length=256)
    school = models.ForeignKey(School,related_name='students', on_delete="Protect")

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("school_app:student_detail",kwargs={'pk':self.pk})
第二次更新:

我正在尝试制作一个类似这样的模板(不确定最好的方法):

{%for colors in colors%}
  • {{color}} {颜色为%的学生为%}
    • {{学生}
    {%endfor%}
{%endfor%}
更改

context['colors']=Student.objects.all(
       ).order_by('color').distinct('color')


请发布您的模型。添加到post的模型在我运行代码时出现此错误:SchoolColorDetailView对象没有属性“student_set‘我必须在某个地方设置此属性吗?哎呀,我的错,你能给我一些你尝试渲染的模板吗?我会修改我的代码以匹配它。我在问题的底部添加了我尝试渲染的模板。”。谢谢你的帮助!
context['colors']=Student.objects.all(
       ).order_by('color').distinct('color')
context['colors']=self.student_set.all(
       ).order_by('color').distinct('color')