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_valuemethod of the primary key and slug related fields,TypeErrors andValueErrors 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_querysetmethod can be hidden and presented back to the user as though, for example, the input provided to theto_internal_valuewas the wrong type, whereas in reality there's a bug in theget_querysetmethod 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_typeerrors from my serializer (errors likewrong pk type - intwhen thepktype on my model isint) when the real problem was a bug in my customget_querysetmethod.