mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
22 lines
778 B
Python
22 lines
778 B
Python
from django.contrib.postgres.fields import ArrayField
|
|
from django.core.serializers.json import Deserializer, Serializer as Serializer_ # noqa
|
|
from django.utils.encoding import is_protected_type
|
|
|
|
# NOTE: Module must contain both Serializer and Deserializer
|
|
|
|
|
|
class Serializer(Serializer_):
|
|
"""
|
|
Custom extension of Django's JSON serializer to support ArrayFields (see
|
|
https://code.djangoproject.com/ticket/33974).
|
|
"""
|
|
def _value_from_field(self, obj, field):
|
|
value = field.value_from_object(obj)
|
|
|
|
# Handle ArrayFields of protected types
|
|
if type(field) is ArrayField:
|
|
if not value or is_protected_type(value[0]):
|
|
return value
|
|
|
|
return value if is_protected_type(value) else field.value_to_string(obj)
|