📜  django 中的值列表 - Python (1)

📅  最后修改于: 2023-12-03 14:40:46.779000             🧑  作者: Mango

Django 中的值列表

在 Django 中,值列表是一个查询集的子集,它只返回一些特定的字段的值,而不是返回整个对象。

值列表主要有两种类型:字典和元组。字典类型的值列表可以通过指定 values 方法的参数来创建,元组类型的值列表则可以通过指定 values_list 方法的参数来创建。

使用字典类型的值列表

使用字典类型的值列表可以将每一个返回值都转换为一个字典类型。这个字典的键是我们指定的字段名,值则是这个字段所对应的值。比如下面的例子,我们只选择了 nameage 两个字段,那么我们得到的每一个结果就变成了一个字典,其中包含了 nameage 两个键值对:

>>> from myapp.models import Person
>>> people = Person.objects.values('name', 'age')
<QuerySet [{'name': 'John', 'age': 26}, {'name': 'Jane', 'age': 21}, {'name': 'Bob', 'age': 32}]>
使用元组类型的值列表

使用元组类型的值列表可以将返回结果转换为元组的形式。元组的第一项是指定的字段1,第二项是字段2,以此类推。比如下面的例子,我们只选择了 nameage 两个字段,那么我们得到的每一个结果就变成了一个元组,其中包含了 nameage 两个值:

>>> from myapp.models import Person
>>> people = Person.objects.values_list('name', 'age')
<QuerySet [('John', 26), ('Jane', 21), ('Bob', 32)]>
使用值列表的注意事项
可以选择指定的字段

在进行值列表查询的时候,可以只选择需要的字段。这样可以避免返回大量不需要的数据,从而提高查询的效率和速度。

不能进行修改操作

使用值列表返回的结果是不可修改的。因为返回的结果不再是原始的 Person 类型对象,而是转换成了字典或元组类型;这就意味着我们不能再对它们进行修改操作,只能用于只读访问。

可以使用聚合函数

使用值列表还可以进行聚合操作,比如我们可以使用 Count 函数来计算 Person 表中有多少行数据:

>>> from myapp.models import Person
>>> total_count = Person.objects.values('id').count()
3
总结
  • 值列表是一个查询集的子集,它只返回一些特定的字段的值。
  • 可以是字典类型的值列表,也可以是元组类型的值列表。
  • 值列表可以选择指定的字段,避免返回大量不需要的数据。
  • 值列表返回的结果是不可修改的,只能进行只读访问。
  • 值列表还可以使用聚合函数进行聚合操作。