mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #19432 -- Provided better error message for get_object_or_404
Thanks Kit Sunde for the report and Brian Holdefehr for the initial patch.
This commit is contained in:
@@ -7,6 +7,7 @@ for convenience's sake.
|
||||
from django.template import loader, RequestContext
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
|
||||
from django.db.models.base import ModelBase
|
||||
from django.db.models.manager import Manager
|
||||
from django.db.models.query import QuerySet
|
||||
from django.core import urlresolvers
|
||||
@@ -72,13 +73,20 @@ def _get_queryset(klass):
|
||||
"""
|
||||
Returns a QuerySet from a Model, Manager, or QuerySet. Created to make
|
||||
get_object_or_404 and get_list_or_404 more DRY.
|
||||
|
||||
Raises a ValueError if klass is not a Model, Manager, or QuerySet.
|
||||
"""
|
||||
if isinstance(klass, QuerySet):
|
||||
return klass
|
||||
elif isinstance(klass, Manager):
|
||||
manager = klass
|
||||
else:
|
||||
elif isinstance(klass, ModelBase):
|
||||
manager = klass._default_manager
|
||||
else:
|
||||
klass__name = klass.__name__ if isinstance(klass, type) \
|
||||
else klass.__class__.__name__
|
||||
raise ValueError("Object is of type '%s', but must be a Django Model, "
|
||||
"Manager, or QuerySet" % klass__name)
|
||||
return manager.all()
|
||||
|
||||
def get_object_or_404(klass, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user