我有以下观点。
def select_classes(request):
...
classesBySelectedGrade = courseBlock.objects.filter(grades__grade__contains=form['grade'].value()).order_by(
'time')
classOptionCount = classesBySelectedGrade.all().count()
classOptionDict = {}
for i in range(classOptionCount):
classOptionDict["option " + str(i + 1)] = classesBySelectedGrade
return render(request, 'select-classes.html', {'classesOptions': classOptionDict})
上述观点的目标:
以下是传递的数据。
{
'classesOptions': {
'option 1': < QuerySet[ < courseBlock: Course Block: Some Course Block 1 - Start: 07: 00: 00, Endtime: 08: 00: 00: > , < courseBlock: Course Block: Some Course Block 2 - Start: 07: 00: 00, Endtime: 08: 00: 00: > ] > ,
'option 2': < QuerySet[ < courseBlock: Course Block: Some Course Block 1 - Start: 07: 00: 00, Endtime: 08: 00: 00: > , < courseBlock: Course Block: Some Course Block 2 - Start: 07: 00: 00, Endtime: 08: 00: 00: > ] >
}
}
我目前在模板中的目标:
这是我正在使用的当前循环。
{% for classesOption in classesOptions %}
<p>
{{ classesOption }}
{% for classes in classesOption %}
{{ classes }}
{% endfor %}
</p>
{% endfor %}
这是我的输出。
option 2 o p t i o n 2
option 1 o p t i o n 1
上述输出与我正在测试的特定数据有关。 那是我期待在这个测试案例中有两个副本。
有关更多背景信息,请参阅我的模型:
class Course(models.Model):
title = models.CharField(max_length=200)
limit = models.IntegerField(default=10)
description = models.TextField(max_length=800)
location = models.CharField(max_length=200, default="")
teachers = models.TextField(max_length=800, default="")
class startEndTime(models.Model):
endTime = models.TimeField()
startTime = models.TimeField()
class courseBlock(models.Model):
course = models.ManyToManyField(Course, related_name='course_in_block')
grades = models.ManyToManyField(Grade, related_name='name_in_block')
title = models.CharField(max_length=100)
time = models.ForeignKey(startEndTime, on_delete=models.CASCADE)
答案 0 :(得分:1)
迭代Python中的dict(扩展名为Django的模板语言)将迭代键,而不是值。然后,您将遍历密钥,这是一个字符串。迭代字符串将返回单个字符。
在这种情况下,您似乎想要打印密钥然后迭代该值。您可以使用dict.items
方法同时迭代键和值:
{% for option, classes in classesOptions.items %}
<p>
{{ option }}
{% for class in classes %}
{{ class }}
{% endfor %}
</p>
{% endfor %}