2010-09-09 37 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)