Django QuerySet 获取数据

获取数据

有多种方法可以将数据从模型中获取到 QuerySet。


values() 方法

values() 方法允许您将每个对象作为 Python 字典返回,并将名称和值作为键/值对:

View

members/views.py:

from django.http import HttpResponse
from django.template import loader
from .models import Members

def testing(request):
  mydata = Members.objects.all().values()
  template = loader.get_template('testing_queries.html')
  context = {
    'mymembers': mydata,
  }
  return HttpResponse(template.render(context, request))

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

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

返回特定列

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

视图

members/views.py:

from django.http import HttpResponse
from django.template import loader
from .models import Members

def testing(request):
  mydata = Members.objects.values_list('firstname')
  template = loader.get_template('testing_queries.html')
  context = {
    'mymembers': mydata,
  }
  return HttpResponse(template.render(context, request))

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

<QuerySet [
  ('Emil',),
  ('Tobias',),
  ('Linus',),
  ('Lene',),
  ('Stalikken',),
]>

返回特定行

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

视图

members/views.py:

from django.http import HttpResponse
from django.template import loader
from .models import Members

def testing(request):
  mydata = Members.objects.filter(firstname='Emil').values()
  template = loader.get_template('testing_queries.html')
  context = {
    'mymembers': mydata,
  }
  return HttpResponse(template.render(context, request))

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

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

您将在下一章中了解有关filter()方法的更多信息。