Django查询列表

JPC*_*JPC 8 python django

我有一个数据库,其中包含多个包含一些信息的字段的记录.

要使表中的所有数据与某个过滤器匹配,我会这样做:

records = Record.objects.filter(fieldA='a')
Run Code Online (Sandbox Code Playgroud)

我想,记录是一个QuerySet对象,包含一个记录的"列表".那是对的吗?

现在让我们说我想在一个字段中列出值.

如果我这样做:

records = Record.objects.filter(fieldA='a').only('fieldB')
Run Code Online (Sandbox Code Playgroud)

我仍然得到一个查询集,但现在它有一些延迟字段.我想要的只是我想要抓住又名字段B的值的列表.我还希望能够获取fieldB的不同值.我想我可以迭代每条记录,拉出fieldB,如果它已经存在就把它添加到列表中,就在那里,但是必须有更好的方法.

谢谢!

编辑:我认为我正在寻找的是

Record.objects.values_list('fieldB')
Run Code Online (Sandbox Code Playgroud)

JPC*_*JPC 11

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

  • 这会产生一个1值元组的列表`(('a',),('b',),('c',))`,这可能不是你想要的.如果你将flat = True传递给values_list(`Record.objects.values_list('fieldB',flat = True)`)你会得到一个平面列表`('a','b','c')`. (6认同)

Jos*_*ook 5

我在这里发布詹姆斯的评论,以使其更加突出。肯定是我要找的东西。

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

Record.objects.values_list('fieldB', flat=True) 
Run Code Online (Sandbox Code Playgroud)