Include choices param for non-editable fields#9929
Open
ticosax wants to merge 4 commits intoencode:mainfrom
Open
Include choices param for non-editable fields#9929ticosax wants to merge 4 commits intoencode:mainfrom
choices param for non-editable fields#9929ticosax wants to merge 4 commits intoencode:mainfrom
Conversation
31c8854 to
758b6ec
Compare
The choices param can be usefull to populate list of possible values and to instantiate a ChoiceField on the serializer, even when field is non_editable. Relevant for the live doc and the OpenAPI integration.
758b6ec to
fa16bbb
Compare
anoop-dryad
approved these changes
Mar 24, 2026
|
Please disregard my approval (I can't undo it apparently) I thought I was working on another repo. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR ensures choices are included in generated serializer field kwargs even when the underlying Django model field is non-editable/read-only, enabling better OpenAPI/live-doc output (and consistent ChoiceField instantiation).
Changes:
- Populate
choicesinget_field_kwargs()before the early return for non-editable fields. - Add a non-editable choice model field and a regression test to confirm it maps to a
ChoiceField.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
rest_framework/utils/field_mapping.py |
Moves choices kwarg population earlier so read-only/non-editable fields still carry choices into serializer construction. |
tests/test_model_serializer.py |
Adds a non-editable choice field to a test model and a test asserting it becomes a ChoiceField. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
browniebroke
approved these changes
Mar 28, 2026
choices params for non editable fields
choices params for non editable fieldschoices param for non-editable fields
Member
|
Looks good to me. Going to leave it open for a few more days to give it time to gather more feedback before merging |
Contributor
|
LGTM also. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The choices param can be usefull to populate list of possible values and to instantiate a ChoiceField on the serializer, even when the field is non_editable.
Relevant for the live doc and the OpenAPI integration.
Description
The fix consist into moving the
choiceskwargs populating step, before the early return for non_editable fields.just before: