用特定查询条件获取某个对象,成功则返回该对象,否则引发一个 Http404。
get_object_or_404(klass, *args, **kwargs)
参数:
klass
接受一个 Model 类,Manager 或 QuerySet 实例,表示你要对该对象进行查询。**kwargs
查询条件,格式需要被 get() 和 filter() 接受。
例子:
from django.shortcuts import render
from django.shortcuts import get_object_or_404
from myApp.models import Book
def my_view(request):
context = {}
# 查询主键为1的书,找不到返回http404
books = get_object_or_404(Book, pk=1)
context['books'] = books
return render(request, 'my_view.html', context)
除了传递一个 Model,还可以传递一个 QuerySet 实例:
queryset = Book.objects.filter(title__startswith='红')
books = get_object_or_404(queryset, pk=1)
以上写法等价于:
get_object_or_404(Book, title__startswith='红', pk=1)