-
-
Notifications
You must be signed in to change notification settings - Fork 7k
Addresses #7279 : consistent formatting btw list serializers and list field errors #9837
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Addresses #7279 : consistent formatting btw list serializers and list field errors #9837
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.