【发布时间】:2019-02-05 16:27:57
【问题描述】:
我正在尝试获取模块字段中不同项目的列表,然后显示与该字段关联的所有项目。
例如,在学校管理系统中有一个学校模块和一个学生模型。每个学生都有一种与他们相关的颜色作为“颜色”字段。我想创建一个页面,该页面列出学校中所有不同的颜色,然后在每种颜色下列出属于该颜色的学生。
我会在视图中编写这个函数吗?
这是我目前在 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 color in colors %}
<ul>
<li>{{color}}
{% for student in color %}
<ul>
<li>{{student}}</li>
</ul>
{% endfor %}
</li>
</ul>
{% endfor %}
【问题讨论】:
-
请发布您的模型。
-
添加模型到帖子
标签: python django django-models django-views django-queryset