【问题标题】:Django query to listDjango 查询列表
【发布时间】:2011-04-10 02:15:31
【问题描述】:

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

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

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

我想,记录是一个 QuerySet 对象,包含一个记录“列表”。对吗?

现在假设我想要一个字段中的值列表。

如果我这样做:

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

我仍然得到一个查询集,但现在它有一些延迟字段。我想要的只是我想要获取的值的列表,即 fieldB。我还希望能够获取 fieldB 的不同值。我想我可以遍历每条记录,拉出 fieldB,如果它不存在,则将其添加到列表中,并且存在,但必须有更好的方法。

谢谢!

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

Record.objects.values_list('fieldB')

【问题讨论】:

标签: python django


【解决方案1】:

是的,找到了:values_list。这是参考:https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list

【讨论】:

  • 这会生成一个单值元组列表(('a',), ('b',), ('c',)),这可能不是您想要的。如果您将 flat=True 传递给 values_list (Record.objects.values_list('fieldB', flat=True)),您将获得一个平面列表 ('a', 'b', 'c')
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 2021-06-27
    • 2013-06-07
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多