系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 Django:2.1.4 Python:3.6.0
Part 1:目标
values_list
,values
Part 2:代码
class SGInputAndCheckView(View):
def get(self, request):
list_field_name = ['class_name', 'student_name', 'exam_info', 'course_name']
print("方法1\n")
constants_list = Constants.objects.values_list(*list_field_name)
print(constants_list)
print("\n")
list_class_name = [x[0] for x in list(constants_list)]
list_student_name = [x[1] for x in list(constants_list)]
list_exam_info = [x[2] for x in list(constants_list)]
list_course_name = [x[3] for x in list(constants_list)]
print("list_class_name = ", list_class_name)
print("list_student_name = ", list_student_name)
print("list_exam_info = ", list_exam_info)
print("list_course_name =", list_course_name)
print("\n方法2\n")
lookup_result = Constants.objects.values(*list_field_name)
print(lookup_result)
print("\n")
list_class_name_2 = [x["class_name"] for x in list(lookup_result)]
list_student_name_2 = [x["student_name"] for x in list(lookup_result)]
list_exam_info_2 = [x["exam_info"] for x in list(lookup_result)]
list_course_name_2 = [x["course_name"] for x in list(lookup_result)]
print("list_class_name_2 = ", list_class_name_2)
print("list_student_name_2 = ", list_student_name_2)
print("list_exam_info_2 = ", list_exam_info_2)
print("list_course_name_2 = ", list_course_name_2)
list_all_class_name = constants_sort(list_class_name)
list_all_student_name = constants_sort(list_student_name)
list_all_exam_info = constants_sort(list_exam_info)
list_all_course_name = constants_sort(list_course_name)
return render(request, 'sg_first_page.html', {
'all_class_name': list_all_class_name,
'all_student_name': list_all_student_name,
'all_exam_info': list_all_exam_info,
'all_course_name': list_all_course_name,
})
代码截图
运行结果
第1种方法输出结果constants_list
<QuerySet [('三年1班', '张三', '第1次模拟考', '语文'),
('三年2班', '李四', '第2次模拟考', '数学'),
('三年3班', '王五', '第3次模拟考', '英语'),
(None, '赵六', '第4次模拟考', None),
(None, None, '第5次模拟考', None),
(None, None, '第6次模拟考', None),
(None, None, '第7次模拟考', None),
(None, None, '第8次模拟
考', None), (None, None, '第9次模拟考', None)]>
第2种方法输出结果lookup_result
<QuerySet [{'class_name': '三年1班', 'student_name': '张三', 'exam_info': '第1次模拟考', 'course_name': '语文'},
{'class_name': '三年2班', 'student_name': '李四', 'exam_info': '第2次模拟考', 'course_name': '数学'}, {'class_name': '三年3班', 'student_name': '王五', 'exam_info': '第3次模拟考', 'course_name': '
英语'},
{'class_name': None, 'student_name': '赵六', 'exam_info': '第4次模拟考', 'course_name': None}, {'class_name': None, 'student_name': None, 'exam_info': '第5次模拟考', 'course_name': None}, {'class_name': None, 'student_name': None, 'exam_info': '第6次模拟考', 'course_name': None}, {'class_name': None, 'student_name': None, 'exam_info': '第7次模拟考', 'course_name': None}, {'class_name': None, 'student_name': None, 'exam_info': '第8次模拟考', 'course_name': None}, {'class_name': None, 'student_name': None, 'exam_info': '第9次模拟考', 'course_name': None}]>
Part 3:部分代码解读
list_class_name = [x[0] for x in list(constants_list)]
list_class_name_2 = [x["class_name"] for x in list(lookup_result)]