从数据库中获取值作为列表

时间:2011-06-24 12:16:36

标签: python django orm

我有模特:

class TreeComment(models.Model):
   parent = models.ForeignKey('self', null=True, blank=True, verbose_name='Parent') 
   title = models.TextField(_('Title'), blank=True)

我想调用TreeComment.objects.all()并将结果值放入某个列表中:

for e in TreeComment.objects.all():
    some_list += e

是否可以将所有值放入列表中,包括父值?

不是整个父对象而只是id(以防止不必要的DB调用和连接)。 之后,我将在业务逻辑中没有DB调用的情况下处理它。

2 个答案:

答案 0 :(得分:2)

如果您要将查询作为列表提取回来,请尝试

TreeComment.objects.values_list()

会返回[(1, u'some title'), ...] 1作为父ID,而你的标题'是标题的值

values_list docs

答案 1 :(得分:0)

我在想2个解决方案

1)在TreeComment类中创建方法get_parent(self)。然后在你的模板中你可以做到 {%for somem in some_list%} {{elem.get_parent.whatever_method}} {%endfor%}

2)您可以使用包含(,标题)的自定义结构,并从您的TreeComment.objects.all()中读取填充方法,获取父级和标题,并使用您的自定义伴侣填充您的列表