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'}]>
<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',)]>
test_infos = Test.objects.filter().values_list("id", flat=True)
<QuerySet ['4820b1d61c762c74bfd67fb9a7c5cd1e', 'f7505f34c39d1874b12cafbd5d9efce0']>
总结
values方法可以获取number字段的字典列表。
values_list可以获取number的元组列表。
values_list方法加个参数flat=True可以获取number的值列表。