Python Django执行查询的最快方法是从表中获取行中的项目列表

Python Django执行查询的最快方法是从表中获取行中的项目列表,python,django,web,crm,Python,Django,Web,Crm,在我的应用程序中,我需要做快速查询,但我不知道哪个更快 materials = Material.objects.only('name') 或者在视图中进行过滤 materials = Material.objects.all() 然后使用for循环显示“name”行中的项目列表 我认为第一个更好,还是有更好的方法? 无法使用filter()完成此操作,因为它需要显示此行中的所有字段。如果只需要名称,可以使用: materials=list(Material.objects.values\u

在我的应用程序中,我需要做快速查询,但我不知道哪个更快

materials = Material.objects.only('name')
或者在视图中进行过滤

materials = Material.objects.all()
然后使用for循环显示“name”行中的项目列表

我认为第一个更好,还是有更好的方法?
无法使用filter()完成此操作,因为它需要显示此行中的所有字段。

如果只需要
名称,可以使用:

materials=list(Material.objects.values\u list('name',flat=True))

这将避免将记录包装在
材质
对象中。也就是说,除非某些列包含(非常)大量的数据,否则使用
。仅(…)
不会显著加快处理速度。此外,在软件设计方面,获取
材料
对象通常更好,因为这意味着您可以在
材料
模型中定义行为。

我认为您根本不了解django orm的工作原理。谢谢,这正是我需要的。大约一个小时前,我在文件中读到了这方面的内容,但我还是感到疲劳。再一次,谢谢你,你为我节省了很多时间!
materials = list(Material.objects.values_list('name', flat=True))