Use filter() to return a list of objects, or raise an Http404 exception if the list is empty. klass may be a Model, Manager, or QuerySet object. All other passed arguments and keyword arguments are used in the filter() query.
(klass, *args, **kwargs)
| 127 | |
| 128 | |
| 129 | def get_list_or_404(klass, *args, **kwargs): |
| 130 | """ |
| 131 | Use filter() to return a list of objects, or raise an Http404 exception if |
| 132 | the list is empty. |
| 133 | |
| 134 | klass may be a Model, Manager, or QuerySet object. All other passed |
| 135 | arguments and keyword arguments are used in the filter() query. |
| 136 | """ |
| 137 | queryset = _get_queryset(klass) |
| 138 | if not hasattr(queryset, "filter"): |
| 139 | klass__name = ( |
| 140 | klass.__name__ if isinstance(klass, type) else klass.__class__.__name__ |
| 141 | ) |
| 142 | raise ValueError( |
| 143 | "First argument to get_list_or_404() must be a Model, Manager, or " |
| 144 | "QuerySet, not '%s'." % klass__name |
| 145 | ) |
| 146 | obj_list = list(queryset.filter(*args, **kwargs)) |
| 147 | if not obj_list: |
| 148 | raise Http404( |
| 149 | _("No %s matches the given query.") % queryset.model._meta.object_name |
| 150 | ) |
| 151 | return obj_list |
| 152 | |
| 153 | |
| 154 | async def aget_list_or_404(klass, *args, **kwargs): |