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

问题描述 投票:-1回答:1

在我的应用中,我需要进行快速查询,但是我不知道哪个更快

materials = Material.objects.only('name')

或在视图中进行过滤

materials = Material.objects.all()

然后使用for循环显示“名称”行中的项目列表

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

python django web crm
1个回答
0
投票

如果只需要name,则可以使用.values_list(..)

.values_list(..)

这将避免将记录包装在materials = list(Material.objects.values_list('name', flat=True))对象中。话虽这么说,除非某些列包含(非常)大量的数据,否则使用Material不会显着加快该过程。此外,从软件设计角度来看,通常最好获取.only(..)对象,因为这意味着您可以在Material模型中定义行为。

© www.soinside.com 2019 - 2024. All rights reserved.