Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-如何从模型中选择特定列?_Django - Fatal编程技术网

Django-如何从模型中选择特定列?

Django-如何从模型中选择特定列?,django,Django,我四处嗅了嗅,所以找不到这个,但我肯定它就在这里的某个地方。抱歉,这可能是双重职位 如果我有此代码: return Story.objects.filter(user=request.user.id).order_by('-create_date') 假设Story有一个“description”字段,我只需要这个description字段,数据库不需要将任何其他内容与我的结果一起发送回来,我如何将查询限制在这个范围内 也就是说,如何生成此SQL: select description fro

我四处嗅了嗅,所以找不到这个,但我肯定它就在这里的某个地方。抱歉,这可能是双重职位

如果我有此代码:

return Story.objects.filter(user=request.user.id).order_by('-create_date')
假设Story有一个“description”字段,我只需要这个description字段,数据库不需要将任何其他内容与我的结果一起发送回来,我如何将查询限制在这个范围内

也就是说,如何生成此SQL:

select description from story where user_id = x order by create_date desc
(其中x当然是request.user.id值)

使用
values()
values\u list()

如果您使用
values()
,您将得到一个字典列表(从技术上讲是
ValuesQuerySet

如果您使用
values\u list()
,您将得到一个元组列表

instance = MyModel.objects.values_list('description')[0]
description = instance[0]
或者,如果您在本例中仅获得一个值,您可以使用
flat=True
kwarg和
values\u list
来获得一个简单的值列表

description = MyModel.objects.values_list('description', flat=True)[0]

请参见

使用。请阅读文档

,因为文档中说,如果您的查询集只生成一个对象,建议您使用get()而不是filter。根据您给出的名称,我假设每个用户的user_id都是不同的。 EDIT1:我刚刚注意到orderby子句。因此,我建议在用户id不同或带有pk的情况下使用此代码

    description = story.objects.filter('description').get(user_id=x)

正确:
return Story.objects.filter(user=request.user.id)。order_by('-create_date')。value('description')
@bharal很多时候,我发现值列表比元组列表更有用。您可以将
flat=True
传递到
values\u list
以获得一个值列表。这实际上也会发回
pk
,从我刚刚阅读的文档中可以看出:defer()方法(及其表亲,下面的only())仅适用于高级用例。当您仔细分析查询,准确了解所需信息,并测量返回所需字段与模型的完整字段集之间的差异将非常显著时,它们为您提供了优化。问题的可能重复之处在于如何选择特定的列值使用Django ORM从给定的表中。
    description = story.objects.filter('description').get(user_id=x)