如何将字典的键值附加到列表中

时间:2012-03-26 08:15:55

标签: python django django-views

我有这样的功能:

def eventcateg_detail(request):
    ca = EventTypeCategory.objects.values()
    for i in range(0, len(ca)):
       pk_sub = ca[i]['sub_categ_id']
       if (pk_sub!=None):
          category = EventTypeCategory.objects.get(id = pk_sub)
          category = category.name
    return render(request,"events/categ.html",{
       'obj': ca
        })

上述功能的定义:

拳头我正在获取ca变量的字典,即

[{'Message_slug': u'critical', 'sub_categ_id': None, 'user_id': 1L, 'id': 190L, 'name': u'Critical'}, {'Message_slug': u'information', 'sub_categ_id': 190L, 'user_id': 1L, 'id': 192L, 'name': u'Information'}]

现在我想在sub_categ_id中为每个内容获取一个值。我在pk_sub变量中得到了这个。正如您所看到的那样,pk_sub返回一个id(它本身就是外键)。我想得到所有这些指向pk_sub的值。我也得到了这个:

Critical
Information
Amit Pal

现在我想将这个category.name附加到列表中。这样我就可以轻松传递给我的模板了。我该怎么做?

我尝试将下面的代码放在下一行:

categories = categories.append(category)

但它不起作用:(

1 个答案:

答案 0 :(得分:2)

两件事:

  1. 您可以直接迭代列表,而不是索引:for category in ca:。在该循环的主体中,类别将绑定到ca。
  2. 中的每个项目
  3. 你永远不会定义categories,所以你不能追加它;在任何情况下,list.append都会返回None,并破坏性地修改列表,因此您必须省略该分配。
  4. 最后,作为一种风格问题,在测试无时,通常会使用x is not None而不是!=

    更新:注意@ agf的评论,其中描述了使用Django ORM执行此任务的正确方法。