Django 最快的查询方式从 table 获取行中的项目列表

Django the fastest way to do Query get list of items in row from table

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

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

或者在视图中进行过滤

materials = Material.objects.all()

然后使用 for 循环显示 'name' 行的项目列表

我认为首先更好还是有更好的方法? 它不能用 filter() 完成,因为它需要显示该行中的所有字段。

如果你只想要 names,你可以使用 .values_list(..):

materials = list(Material.objects<b>.values_list('name', flat=True)</b>)

这将避免将记录包装在 Material 个对象中。也就是说,除非某些列包含(非常)大量的数据,否则使用 .only(..) 不会显着加快该过程。此外,在软件设计方面,获取 Material 对象通常更好,因为这意味着您可以在 Material 模型中定义行为。