ordering on fields which use field.source #3398
Closed
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.
see #3390
Here's what I suggest:
b) if ordering_fields is
__all__
, keep the current behaviour (ordering on all model fields). See Notes below.c) if ordering_fields is
None
, allow ordering on all serializer fields (allow field names and use field.source for the actual ordering).d) if ordering_fields are explicitely defined, allow ordering on defined fields (allow field names and use field.source for the actual ordering).
Additional changes:
a) use
serializer_class
ORget_serializer_class
(please note that I didn't change the error message).b) distinguish between
ordering_fields
andvalid_fields
.c) remove serializer method fields from
valid_fields
.Notes:
a) I'm not sure about
__all__
versusNone
, because ordering on model fields seems strange (since they are not necessarily part of the serializer). Howerver, I didn't want to change the current behaviour here.