我正在传递变量" first_letter"查看并希望将此字母与查询返回的每个项目的第一个字母进行比较。我无法达到可以比较的列表,我只返回一个项目。
型号:
class Subjects(models.Model)
subject = models.CharField(max_length=75)
....
查看:
def subjects_by_letter(request, first_letter):
subject_list = Subjects.objects.all()
for item in subject_list:
letter = item.subject[0]
return render_to_response('/path/to/mytemplate.html', {
'subject_list': subject_list,
'first_letter': first_letter,
'letter': letter,
})
在视图中,我得到的只是查询中最后一条记录的第一个字母:
...
for item in subject_list:
letter = item.subject[0]
...
例如:如果我的主题条目为" Apple"," Banana" &安培; "黄瓜"它只会返回C而不是包含A,B和B的列表。下进行。
我希望有人可以指出我所缺少的简单事物。感谢。
答案 0 :(得分:1)
问题中的代码返回for循环。您需要在列表外部创建一个列表,并在循环中追加第一个字符。
def subjects_by_letter(request, first_letter):
subject_list = Subjects.objects.all()
letter = [item.subject[0] for item in subject_list] # <---
return render_to_response('/path/to/mytemplate.html', {
'subject_list': subject_list,
'first_letter': first_letter,
'letter': letter,
})