Django QuerySet 获取数据

获取数据

从模型中获取数据到查询集有不同的方法。


values() 方法

values() 方法让您可以将每个对象作为 Python 字典返回,包含名称和值作为键/值对:

视图

members/views.py:

  1. from django.http import HttpResponse
  2. from django.template import loader
  3. from .models import Members
  4. def testing(request):
  5. mydata = Members.objects.all().values()
  6. template = loader.get_template('testing_queries.html')
  7. context = {
  8. 'mymembers': mydata,
  9. }
  10. return HttpResponse(template.render(context, request))

发送到模板的模型如下所示:

  1. <QuerySet [
  2. {'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'},
  3. {'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},
  4. {'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
  5. {'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
  6. {'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'}
  7. ]>

返回指定列

values_list() 方法只允许返回指定的列。

视图

members/views.py:

  1. from django.http import HttpResponse
  2. from django.template import loader
  3. from .models import Members
  4. def testing(request):
  5. mydata = Members.objects.values_list('firstname')
  6. template = loader.get_template('testing_queries.html')
  7. context = {
  8. 'mymembers': mydata,
  9. }
  10. return HttpResponse(template.render(context, request))

发送到模板的模型如下所示:

  1. <QuerySet [
  2. ('Emil',),
  3. ('Tobias',),
  4. ('Linus',),
  5. ('Lene',),
  6. ('Stalikken',),
  7. ]>

返回指定行

使用 filter() 方法,您可以筛选搜索仅返回特定的行/记录。

视图

members/views.py:

  1. from django.http import HttpResponse
  2. from django.template import loader
  3. from .models import Members
  4. def testing(request):
  5. mydata = Members.objects.filter(firstname='Emil').values()
  6. template = loader.get_template('testing_queries.html')
  7. context = {
  8. 'mymembers': mydata,
  9. }
  10. return HttpResponse(template.render(context, request))

发送到模板的模型如下所示:

  1. <QuerySet [
  2. {'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}
  3. ]>

在下一章中,您将学习到有关 next chapter 方法的更多知识。