From 5b7d9fe16d274e3ac98e90685e667ac7613d8ca7 Mon Sep 17 00:00:00 2001 From: Manuel Holtgrewe Date: Tue, 18 Jul 2023 16:03:48 +0200 Subject: [PATCH] feat: add option to duplicate list key (#1) (#2) Release-As: 0.1.0 Co-authored-by: mikko.nieminen --- drf_keyed_list/serializers.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drf_keyed_list/serializers.py b/drf_keyed_list/serializers.py index da7b8a7..1a38752 100644 --- a/drf_keyed_list/serializers.py +++ b/drf_keyed_list/serializers.py @@ -10,6 +10,7 @@ class KeyedListSerializer(ListSerializer): "not_a_dict": _('Expected a dict of items but got type "{input_type}".'), "empty": _("This dict may not be empty."), } + _duplicate_key = False def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -18,6 +19,7 @@ def __init__(self, *args, **kwargs): meta, "keyed_list_serializer_field" ), "Must provide a field name at keyed_list_serializer_field when using KeyedListSerializer" self._keyed_field = meta.keyed_list_serializer_field + self._duplicate_key = meta.duplicate_list_key def to_internal_value(self, data): if not isinstance(data, dict): @@ -34,4 +36,6 @@ def to_internal_value(self, data): def to_representation(self, data): response = super().to_representation(data) + if self._duplicate_key: + return {v[self._keyed_field]: v for v in response} return {v.pop(self._keyed_field): v for v in response}