Django 查询列出
我有一个数据库,里面有很多记录,每条记录都有几个字段,存储了一些信息。
如果我想获取表中符合某个条件的所有数据,我会这样做:
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