2010-09-09 41 views
7

我有一个数据库,其中有几个字段包含一些信息的记录。Django查询到列表

要获得表中的所有数据匹配的一些过滤器我应该这样做:

records = Record.objects.filter(fieldA='a') 

记录,我想,是一个QuerySet对象,并包含一个记录“名单”。那是对的吗?

现在,让我们说我想要一个字段值的列表。

如果我这样做:

records = Record.objects.filter(fieldA='a').only('fieldB') 

我仍然得到一个QuerySet,但现在它有一些推迟领域。我想要的只是我想要抢夺fieldB的价值清单。我也希望能够抓住fieldB的不同值。我想我可以迭代每条记录,将fieldB拉出来,如果它不在那里,就将它添加到列表中,然后它就会出现,但是这里有一个更好的方法。

谢谢!

编辑:我想我正在寻找的是

Record.objects.values_list('fieldB') 
+0

http://stackoverflow.com/questions/4424435/how-to-convert-a-django-queryset-to-a-list – Wtower 2015-05-06 10:36:21

回答

10

是啊,找到了。 http://docs.djangoproject.com/en/dev/ref/models/querysets/这里的参考

+5

产生的1-值元组'列表(('一',),('b',),('c',))'',这可能不是你想要的。如果你将flat = True传递给values_list('Record.objects.values_list('fieldB',flat = True)'),你将得到一个扁平列表'('a','b','c')'。 – 2014-03-27 09:34:33

4

我发布评论James在这里使它更突出。这当然是我想要的。

我想要一个值列表。使用QuerySet方法.list_values()返回元组列表。要获取值的列表,我需要选项flat=True

Record.objects.values_list('fieldB', flat=True)