使用之间有什么区别:

Blabla.objects.values('field1', 'field2', 'field3')




Blabla.objects.only('field1', 'field2', 'field3')

最佳答案

假设Blabla在您的问题以及field4中都包含字段,

Blabla.objects.only('field1', 'field2', 'field3')[0].field4


将返回该对象的field4的值(使用新的数据库查询来检索该信息),而

Blabla.objects.values('field1', 'field2', 'field3')[0].field4


会给

AttributeError: 'dict' object has no attribute 'field4'


这是因为.values()根据现有的ValuesQuerySet返回一个QuerySet,该QuerySet本质上是字典列表(在某种意义上,普通的Blabla是对象的列表)。

关于django - values()和only()之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11974691/

10-12 22:18