【问题标题】:convert a django queryset into an array将 django 查询集转换为数组
【发布时间】:2014-02-21 23:28:05
【问题描述】:

我想将一个 django 查询集转换为一个数组,例如,

firstnames=Users.objects.values('firstnames')

得到类似的结果

firstnames = ["Nancy", "Andrew", "Janet", "Margaret", "Steven", "Michael", "Robert", "Laura", "Anne"];

请问有什么见解吗? 问候 乔什

【问题讨论】:

    标签: python arrays django django-models


    【解决方案1】:

    使用QuerySet.values_list 并指定flat=True

    firstnames = Users.objects.values_list('firstnames', flat=True)
    firstnames = list(firstnames)
    

    【讨论】:

    • 你好 falsetru,我得到一个错误 Manager object has no attribute value_list
    • @user3262370,是values_list,不是value_list
    • 我用十进制值试过这个,返回的列表包含字符串:Decimal('50.00'), Decimal('100.00')??我如何获取这些值?
    • @almostabeginner,它们不是字符串。十进制对象的表示看起来像这样。根据您的需要尝试int(Decimal('50.00'))float(Decimal('50.00'))
    • 使用 values_list 你会得到一个 Queryset... 包含一个列表: 所以你必须意识到你不能真正使用你的结果作为一个列表(例如将您的“列表”添加到另一个列表)。
    【解决方案2】:
    def get_array(Table, column):
        rows = Table.objects.values(column)
        return [row[column] for row in rows]
    
    print get_array(Users, 'firstnames')
    

    【讨论】:

    • 改用 value_list() 并仅选择您需要的列
    • 在某些抽象中,限制列可能没有意义。对于简单的用例,您所说的是一个很好的一般规则。
    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2019-05-30
    • 2021-11-08
    • 2017-01-23
    • 2019-01-26
    • 2022-01-14
    • 2023-01-31
    • 2015-06-25
    相关资源
    最近更新 更多