从Django中的queryset筛选数据,但不返回整个queryset
我正在尝试从Djano中的给定对象获取属性。我得到了正确的值,但我很好奇是否有更好的方法来获取这些数据 我使用以下命令获取name属性:从Django中的queryset筛选数据,但不返回整个queryset,django,django-models,django-views,django-rest-framework,Django,Django Models,Django Views,Django Rest Framework,我正在尝试从Djano中的给定对象获取属性。我得到了正确的值,但我很好奇是否有更好的方法来获取这些数据 我使用以下命令获取name属性: owner_name = Owner.objects.filter(id=id).values('name') 它正确地返回我要查找的name属性,但其形式如下: <QuerySet [{'name': u'John Doe'}]> 我如何让它只返回“John Doe”而不是 编辑:我发现我可以通过以下方式获得所需信息: owner\u n
owner_name = Owner.objects.filter(id=id).values('name')
它正确地返回我要查找的name
属性,但其形式如下:
<QuerySet [{'name': u'John Doe'}]>
我如何让它只返回“John Doe”而不是
编辑:我发现我可以通过以下方式获得所需信息:
owner\u name[0]。获取('name')
它将返回
johndoe
。是否还有更好的方法仅获取1个属性?您需要一个带有flat=True
参数的values\u列表
查询。从:
通常需要获取某个模型实例的特定字段值。要实现这一点,请使用value_list()后跟get()调用:
Entry.objects.values\u list('headline',flat=True).get(pk=1)
或者在您的情况下:
Owner.objects.values_list('name', flat=True).get(id=id)
请注意,
get
如果没有一个匹配结果,将引发异常。如果这是一种可能性,比如说因为您在筛选id以外的内容,或者因为可能没有匹配的对象,您可以捕获异常,或者您可以处理返回的名称列表并检查其长度。谢谢。这正是我读文件时错过的。我可以处理这个异常。