Don't catch exceptions in get_queryset #7480
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the
to_internal_value
method of the primary key and slug related fields,TypeError
s andValueError
s are caught fromself.get_queryset().get(...)
and presented to the user. This works fine for most cases, but can cause problems if the exception is coming fromself.get_queryset()
rather than from the.get(...)
.It means errors in the
get_queryset
method can be hidden and presented back to the user as though, for example, the input provided to theto_internal_value
was the wrong type, whereas in reality there's a bug in theget_queryset
method and therefore it should bubble up and be exposed as a server error.I've decided to fix this because twice now I've had to debug why I'm seeing
invalid_type
errors from my serializer (errors likewrong pk type - int
when thepk
type on my model isint
) when the real problem was a bug in my customget_queryset
method.