在我的应用中,我需要进行快速查询,但是我不知道哪个更快
materials = Material.objects.only('name')
或在视图中进行过滤
materials = Material.objects.all()
然后使用for循环显示“名称”行中的项目列表
我认为这样做是更好的选择,还是有更好的方法?无法使用filter()完成此操作,因为它需要显示此行中的所有字段。
如果只需要name
,则可以使用.values_list(..)
:
.values_list(..)
这将避免将记录包装在materials = list(Material.objects.values_list('name', flat=True))
对象中。话虽这么说,除非某些列包含(非常)大量的数据,否则使用Material
不会显着加快该过程。此外,从软件设计角度来看,通常最好获取.only(..)
对象,因为这意味着您可以在Material
模型中定义行为。