django_filter 的 values/values_list区别

django_filter 的 values/values_list

values

"""
django.db.models.query.QuerySet 
def values(self,
           *fields: Any,
           **expressions: Any) -> Union[QuerySet, QuerySet]
"""
test_infos = Test.objects.filter().values()
# 返回全部列数据
<QuerySet [{'id': '4820b1d61c762c74bfd67fb9a7c5cd1e', 'name': 'zhang-123'}, {'id': 'f7505f34c39d1874b12cafbd5d9efce0', 'name': 'zhang-123456'}]>
# Test.objects.filter().values("id")
# 返回指定列数据
<QuerySet [{'id': '4820b1d61c762c74bfd67fb9a7c5cd1e'}, {'id': 'f7505f34c39d1874b12cafbd5d9efce0'}]>
# 注意:返回结果可以直接做字典使用
for test_info in test_infos:
    id_ = test_info["id"]
    name = test_info["name"]

values_list

"""
django.db.models.query.QuerySet 
def values_list(self,
                *fields: Any,
                flat: bool = False,
                named: bool = False) -> Union[QuerySet, QuerySet]
"""
test_infos = Test.objects.filter().values_list()
# 返回全部列数据
<QuerySet [('4820b1d61c762c74bfd67fb9a7c5cd1e', 'zhang-123'), ('f7505f34c39d1874b12cafbd5d9efce0', 'zhang-123456')]>
test_infos = Test.objects.filter().values_list("id")
# 返回指定列数据
<QuerySet [('4820b1d61c762c74bfd67fb9a7c5cd1e',), ('f7505f34c39d1874b12cafbd5d9efce0',)]>
# 参数 flat=True
test_infos = Test.objects.filter().values_list("id", flat=True)
# 返回指定列数据
<QuerySet ['4820b1d61c762c74bfd67fb9a7c5cd1e', 'f7505f34c39d1874b12cafbd5d9efce0']>
# 注意:values_list 返回多个字段时,flat=True 会发生异常
# 返回结果可以直接 list
# 如:test_infos = list(test_infos)

总结

values方法可以获取number字段的字典列表。
values_list可以获取number的元组列表。
values_list方法加个参数flat=True可以获取number的值列表。

你可能感兴趣的:(python,django,django,python,后端)