如何使用Django中的QuerySet返回的字典中的值

时间:2018-07-24 06:20:58

标签: python django

我写了这个查询

p_name = OrderLine.objects.filter(order_id=order).values('product_name')

它返回以下结果

<QuerySet [{'product_name': 'doc 1 (1-1000)'}]>

我只想使用doc 1 (1-1000)作为字符串。有没有办法做到这一点。我在某个网站上阅读过使用.values()的信息,但返回了[{'product_name': 'doc 1 (1-1000)'}]

2 个答案:

答案 0 :(得分:1)

您可以使用values_list() + flat=True来生成列表。

>>> p_name = OrderLine.objects.filter(order_id=order).values_list('product_name',flat=True)
>>> print(p_name)
>>> <QuerySet ['doc 1 (1-1000)']>

这旨在从value_list()中传递的字段中生成值列表。如果您确定它只有一个值并且是想要的值,则可以在列表中建立索引:

>>> p_name[0]
>>> 'doc 1 (1-1000)'

答案 1 :(得分:0)

我同意@Lemayzeur的回答。但是您也可以通过两种方式使用代码:

p_name.first() # this will return the dictionary itself

或者您可以使用

将查询集转换为列表
list(p_name)

这不是推荐的方法,但是在其他情况下可能会派上用场。

干杯!