只有一个变量的情况
如果在使用 .values_list()
方法时只选择了一个字段,那么返回的结果是一个仅含有一个元素的元组列表。此时,你可以选择不进行解构,直接访问列表中的元组对象。
例如,如果我们只取回 MyModel
的 name
字段:
from myapp.models import MyModel
# 取回一个元祖列表,包含 MyModel 的 name 字段值
results = MyModel.objects.values_list('name', flat=True)
# 遍历元祖列表
for name in results:
# 打印每个 MyModel 对象的 name 值
print(f"Name: {name}")
在上面的例子中,我们将 .values_list()
方法的关键字参数 flat
设置为 True
,这样返回的结果就是一个扁平化的列表。由于我们只选择了一个字段,因此直接遍历列表中的元素即可。
两个变量
和遍历QuerySet对象类似,你可以使用Python内置的迭代方法 for-in
来遍历 .values_list()
方法返回的元素。
当使用 .values_list()
方法时,返回的结果是一个元组的列表。因此,在处理每个元组时,你可以使用元组拆包的方式将其转换为可读性更好的命名变量,并对其进行操作。例如:
from myapp.models import MyModel
# 取回一个元祖列表,包含 MyModel 的 name 和 age 字段值
results = MyModel.objects.values_list('name', 'age')
# 遍历元祖列表
for name, age in results:
# 打印每个 MyModel 对象的 name 和 age 值
print(f"Name: {name}, Age: {age}")
在上面的例子中,我们将 .values_list()
方法返回的元组用 name
和 age
两个变量进行了解构,使代码更具可读性。