📜  Django values_list (1)

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

Django values_list

在Django中,values_list()是一个QuerySet方法,可以用于获取指定字段的值列表。与使用values()方法相比,values_list()返回的是一个包含元组的QuerySet,其中每个元组表示指定字段的一个实例。

语法
values_list(*fields, flat=False, named=False)
参数
  • fields:接受一个或多个字段名作为参数,用于指定需要获取的字段。字段名可以是模型字段名或相关模型的字段名,多个字段名之间用逗号分隔。
  • flat(可选):如果设置为True,则仅返回包含指定字段第一个值的单一实例的QuerySet。
  • named(可选):如果设置为True,则返回一个包含有字段名称的namedtuple
返回值

values_list()方法返回一个QuerySet,其中包含从数据库中检索到的每个实例的指定字段的值。如果指定的字段是外键,则返回外键的ID。如果将flat设置为True,则返回一个包含实例指定字段的单一值的QuerySet。

示例

假设我们有一个名为Book的模型,其中包含书籍的标题,作者和出版日期等字段。假设我们需要从数据库中获取所有书籍的标题和作者的值列表,可以使用以下代码:

books = Book.objects.values_list('title', 'author')
for title, author in books:
    print(title, author)

如果要仅获取书籍的标题列表,则可以设置flat参数为True

titles = Book.objects.values_list('title', flat=True)
for title in titles:
    print(title)

如果要返回一个带有字段名称的namedtuple,则可以将named参数设置为True

from collections import namedtuple

BookInfo = namedtuple('BookInfo', ['title', 'author'])
books = Book.objects.values_list('title', 'author', named=True)
book_info = [BookInfo(*book) for book in books]
for info in book_info:
    print(info.title, info.author)

以上就是Djangovalues_list()方法的简介。此方法在处理大量数据时非常有用,特别是当您只需要访问几个字段时,因为它可以限制查询返回的数据量。