Reduce queries for supported ManyRelatedField #9211
+70
−18
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.
Description
From the discussion here #8919, a related field with a
many=True
will only execute one query for all items instead of one for every item.It currently works for:
There are currently four issues regarding this pull request:
to_many_internal_value
and only overrideto_internal_value
, the overridden value won't be used (becauseto_many_internal_value
will be use instead).to_internal_value
property was overwritten and raise an error / use the old behaviour in this case but I am not sure this is a good ideaPrimaryKeyRelatedField
, when the type is wrong, the type of the first item is raised in the error as it is unclear how to retrieve the problematic item. Some solutions to keep the old behaviour if this is an issue:SlugRelatedField
, I add to annotate the related field to detect if an item does not exist and which one. I don't know if this is acceptable or not.