Use get() to return an object, or raise an Http404 exception if the object does not exist. klass may be a Model, Manager, or QuerySet object. All other passed arguments and keyword arguments are used in the get() query. Like with QuerySet.get(), MultipleObjectsReturned is rais
(klass, *args, **kwargs)
| 77 | |
| 78 | |
| 79 | def get_object_or_404(klass, *args, **kwargs): |
| 80 | """ |
| 81 | Use get() to return an object, or raise an Http404 exception if the object |
| 82 | does not exist. |
| 83 | |
| 84 | klass may be a Model, Manager, or QuerySet object. All other passed |
| 85 | arguments and keyword arguments are used in the get() query. |
| 86 | |
| 87 | Like with QuerySet.get(), MultipleObjectsReturned is raised if more than |
| 88 | one object is found. |
| 89 | """ |
| 90 | queryset = _get_queryset(klass) |
| 91 | if not hasattr(queryset, "get"): |
| 92 | klass__name = ( |
| 93 | klass.__name__ if isinstance(klass, type) else klass.__class__.__name__ |
| 94 | ) |
| 95 | raise ValueError( |
| 96 | "First argument to get_object_or_404() must be a Model, Manager, " |
| 97 | "or QuerySet, not '%s'." % klass__name |
| 98 | ) |
| 99 | try: |
| 100 | return queryset.get(*args, **kwargs) |
| 101 | except queryset.model.DoesNotExist: |
| 102 | raise Http404( |
| 103 | # Translators: %s is the name of a model, e.g. "No City matches the |
| 104 | # given query." |
| 105 | _("No %s matches the given query.") |
| 106 | % queryset.model._meta.object_name |
| 107 | ) |
| 108 | |
| 109 | |
| 110 | async def aget_object_or_404(klass, *args, **kwargs): |
nothing calls this directly