Addresses #7279 : consistent formatting btw list serializers and list field errors#9837
Addresses #7279 : consistent formatting btw list serializers and list field errors#9837p-r-a-v-i-n wants to merge 6 commits intoencode:mainfrom
Conversation
There was a problem hiding this comment.
here is the updated sample format
{ 'list_serializer': { 0: {'num': [ErrorDetail(string='Must be a valid boolean.', code='invalid')]}, 1: {'num': [ErrorDetail(string='Must be a valid boolean.', code='invalid')]} }, 'list_field': { 1: [ErrorDetail(string='This dictionary may not be empty.', code='empty')], 3: [ErrorDetail(string='This dictionary may not be empty.', code='empty')] } }
The top level structure is indeed a dict, but the values of this dict aren't consistent: in the list serializer case, they are dict[str, list[ErrorDetail]] while in the list field they are list[ErrorDetail].
Is that right or am I missing something?
EDIT: I think I got it, ignore this comment
There was a problem hiding this comment.
Pull request overview
This PR changes the error format for ListSerializer to use a dict-based structure (with indices as keys) instead of a list-based structure (with empty dicts for valid items). This improves consistency with how ListField handles errors and makes error handling easier for API clients.
- Changed error structure from list to dict format for
ListSerializer - Only invalid item indices are included in error dict (no empty placeholders for valid items)
- Ensures consistency between
ListSerializerandListFielderror formats
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| rest_framework/serializers.py | Modified to_internal_value to collect errors in a dict keyed by index instead of a list with empty dicts for valid items |
| tests/test_serializer_lists.py | Added comprehensive tests for dict-based error format and consistency between ListSerializer and ListField |
| tests/test_serializer_bulk_update.py | Updated expected error format in tests to use dict structure with indices as keys |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Fix #7279
This pr changes the formatting of list serializer errors.
Changes:
returning
dictinstead of thelistbcs :here is the updated sample format
for clarity I can add more example if needed.