【发布时间】:2013-02-02 01:50:24
【问题描述】:
我想查询单个实例的模型(例如,id=1),但我只想返回单个字段的值('title')。我可以通过以下查询来实现这一点:
SomeModel.objects.filter(pk=1).values_list('title', flat=True)
但是get 比filter 更有效。但是,values_list 和 values 不适用于 get 查询。理想情况下,我更愿意这样做:
SomeModel.objects.get(pk=1).values_list('title', flat=True)
但我收到以下错误:AttributeError: SomeModel has no attribute 'title'
编写此查询的最佳方式是什么?
【问题讨论】:
-
您可能不必担心
filter和get之间的性能。真正重要的是您不执行 1+N 查询。您当前的代码几乎看起来像您正在为各种键执行此查询。如果是这种情况,您应该执行连接或使用pk__in=[1,2,3,4,5]同时获取多个对象的标题。 -
另外 OP 也不需要担心
filter和get之间的性能差异,因为没有任何 ;) -
除非,我想,OP 正在尝试处理多行......在这种情况下,
get会更快,因为它会立即抛出异常!跨度>
标签: python django django-models django-queryset