You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SparseFieldsetsMixin does not adjust field_names by configured format.
Fix:
classSparseFieldsetsMixin:
""" A serializer mixin that adds support for sparse fieldsets through `fields` query parameter. Specification: https://jsonapi.org/format/#fetching-sparse-fieldsets """def__init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
context=kwargs.get("context")
request=context.get("request") ifcontextelseNoneifrequest:
sparse_fieldset_query_param="fields[{}]".format(
get_resource_type_from_serializer(self)
)
try:
param_name=next(
keyforkeyinrequest.query_paramsifsparse_fieldset_query_param==key
)
exceptStopIteration:
passelse:
fieldset=request.query_params.get(param_name).split(",")
# iterate over a *copy* of self.fields' underlying OrderedDict, because we may# modify the original during the iteration.# self.fields is a `rest_framework.utils.serializer_helpers.BindingDict`forfield_name, fieldinself.fields.fields.copy().items():
if (
field_name==api_settings.URL_FIELD_NAME
): # leave self link therecontinue# missing format_value()correct_field_name=format_value(field_name, json_api_settings.FORMAT_FIELD_NAMES)
ifcorrect_field_namenotinfieldset:
self.fields.pop(field_name)
Checklist
Certain that this is a bug (if unsure or you have a question use discussions instead)
Code snippet or unit test added to reproduce bug
The text was updated successfully, but these errors were encountered:
I agree this is a bug. For compatibility as we do it in other spots it is better to run undo_format_field_name on the fieldset to solve this issue. PR is welcome.
Description of the Bug Report
SparseFieldsetsMixin
does not adjust field_names by configured format.Fix:
Checklist
The text was updated successfully, but these errors were encountered: