Parcourir la source

Tweaked ChoiceFieldSerializer to display a field as (value, label)

Jeremy Stretch il y a 8 ans
Parent
commit
21281789e0
2 fichiers modifiés avec 5 ajouts et 5 suppressions
  1. 1 1
      netbox/dcim/api/serializers.py
  2. 4 4
      netbox/utilities/api.py

+ 1 - 1
netbox/dcim/api/serializers.py

@@ -103,7 +103,7 @@ class RackSerializer(CustomFieldModelSerializer):
     tenant = NestedTenantSerializer()
     role = NestedRackRoleSerializer()
     type = ChoiceFieldSerializer(choices=RACK_TYPE_CHOICES)
-    # width = ChoiceFieldSerializer(choices=RACK_WIDTH_CHOICES)
+    width = ChoiceFieldSerializer(choices=RACK_WIDTH_CHOICES)
 
     class Meta:
         model = Rack

+ 4 - 4
netbox/utilities/api.py

@@ -12,18 +12,18 @@ class ServiceUnavailable(APIException):
 
 class ChoiceFieldSerializer(Field):
     """
-    Represent a ChoiceField as a list of (value, label) tuples.
+    Represent a ChoiceField as (value, label).
     """
 
     def __init__(self, choices, **kwargs):
-        self._choices = choices
+        self._choices = {k: v for k, v in choices}
         super(ChoiceFieldSerializer, self).__init__(**kwargs)
 
     def to_representation(self, obj):
-        return self._choices[obj]
+        return obj, self._choices[obj]
 
     def to_internal_value(self, data):
-        return getattr(self._choices, data)
+        return self._choices.get(data)
 
 
 class WritableSerializerMixin(object):