- Notifications
You must be signed in to change notification settings - Fork302
Closed
Description
Description of the Bug Report
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 usediscussions instead)
- Code snippet or unit test added to reproduce bug