Django有序对象集的输出指数

时间:2011-11-10 02:47:37

标签: python django

我目前有一个数据模型设置,其中每个School对象都有一个名称。在我的网站的主页面上,我输出所有按名称按字母顺序排序的School对象。我希望Django有办法为对象创建索引标题?我的意思是将每个School对象按其名字的第一个字母分类。这对我来说非常有用,因为我可以为可能很长的学校名单提供章节标题。理想情况下,我不想将所有学校对象都返回到模板中,而是希望以某种方式操纵/排序对象,使得它们被分类为数组字典,其中主字典的键是字母表中的字母(不包括那些没有以该字母开头的学校名称的学校名称),这些数值是学校的数组,其名称以相应键的第一个字母开头。这样可以很容易地在django模板系统中循环,以完成我想要的节标题。任何帮助将不胜感激。这是Django原生的吗?或者我将不得不使用一些python逻辑?

1 个答案:

答案 0 :(得分:1)

你无法让数据库对它们进行分组,但这是一段非常简单的代码:

# obviously adapt this to your actual model
schools = School.objects.order_by('name').all()

school_dict = {}
for school in schools:
    first_letter = school.name[0].lower()
    if first_letter in school_dict:
        school_dict[first_letter].append(school)
    else:
        school_dict[first_letter] = [school]