Django 查询列出

11 投票
2 回答
27130 浏览
提问于 2025-04-16 03:53

我有一个数据库,里面有很多记录,每条记录都有几个字段,存储了一些信息。

如果我想获取表中符合某个条件的所有数据,我会这样做:

records = Record.objects.filter(fieldA='a')

我想,records 是一个查询集对象,里面包含了一系列的记录,对吗?

现在假设我想要获取某个字段的所有值。

如果我这样做:

records = Record.objects.filter(fieldA='a').only('fieldB')

我仍然得到一个查询集,但现在它有一些延迟加载的字段。我想要的只是我想要提取的字段的值,也就是 fieldB。我还想获取 fieldB 的不同值。我可以遍历每条记录,提取出 fieldB,如果这个值还不在列表里,就把它加进去,这样就可以了,但我觉得应该有更好的方法。

谢谢!

编辑:我想我在找的是

Record.objects.values_list('fieldB')

2 个回答

9

我在这里转发James的评论,让它更显眼。这正是我想要的内容。

我想要一个值的列表。使用QuerySet的方法.values_list()返回的是一个元组的列表。如果想要得到一个简单的值列表,我需要加上选项flat=True

Record.objects.values_list('fieldB', flat=True) 
12

没错,我找到了:values_list。这是相关的参考链接:https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list

撰写回答