From 24b48b75b6aafcefdd7903bfccee5e38aa76d59b Mon Sep 17 00:00:00 2001 From: Robert Singer Date: Sun, 8 Aug 2021 17:12:34 -0500 Subject: [PATCH] Pass correct init args; only pass them if flex serializer --- rest_flex_fields/serializers.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/rest_flex_fields/serializers.py b/rest_flex_fields/serializers.py index bf6269f..c8e3c7e 100644 --- a/rest_flex_fields/serializers.py +++ b/rest_flex_fields/serializers.py @@ -92,24 +92,27 @@ def _make_expanded_field_serializer( serializer_class = field_options settings = {} - settings["parent"] = self + if type(serializer_class) == str: + serializer_class = self._get_serializer_class_from_lazy_string( + serializer_class + ) + settings["context"] = self.context - if name in nested_expand: - settings["expand"] = nested_expand[name] + if issubclass(serializer_class, FlexFieldsSerializerMixin): + settings["parent"] = self - if name in nested_fields: - settings["fields"] = nested_fields[name] + if name in nested_expand: + settings[EXPAND_PARAM] = nested_expand[name] - if name in nested_omit: - settings["omit"] = nested_omit[name] + if name in nested_fields: + settings[FIELDS_PARAM] = nested_fields[name] + + if name in nested_omit: + settings[OMIT_PARAM] = nested_omit[name] - if type(serializer_class) == str: - serializer_class = self._get_serializer_class_from_lazy_string( - serializer_class - ) - return serializer_class(**settings) + return serializer_class(**settings) def _get_serializer_class_from_lazy_string(self, full_lazy_path: str): path_parts = full_lazy_path.split(".")