Skip to content

Commit b3377bc

Browse files
committed
Fix handling of invalid PK values
1 parent 26038fe commit b3377bc

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drf_sideloading/mixins.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from itertools import chain
55
from typing import Dict, Optional, Union, Set, List
66

7+
from django.core.exceptions import ValidationError as DjangoValidationError
78
from django.db import models
89
from django.db.models import Prefetch
910
from django.db.models.fields.related_descriptors import (
@@ -13,6 +14,7 @@
1314
ReverseManyToOneDescriptor,
1415
)
1516
from django.db.models.sql.where import WhereNode, AND
17+
from django.http import Http404
1618
from django.utils.translation import gettext_lazy as _
1719
from rest_framework.exceptions import ValidationError
1820
from rest_framework.generics import get_object_or_404
@@ -488,7 +490,10 @@ def get_sideloadable_object_as_queryset(self, request, relations_to_sideload):
488490
)
489491

490492
filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
491-
queryset = queryset.filter(**filter_kwargs)
493+
try:
494+
queryset = queryset.filter(**filter_kwargs)
495+
except (TypeError, ValueError, DjangoValidationError):
496+
raise Http404
492497

493498
# check single object fetched
494499
obj = get_object_or_404(queryset)

0 commit comments

Comments
 (0)