mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #26555 -- Gave deconstructible objects a higher priority during serialization
This commit is contained in:
@@ -329,6 +329,18 @@ def serializer_factory(value):
|
||||
# tuple.
|
||||
value = value.__reduce__()[1][0]
|
||||
|
||||
if isinstance(value, models.Field):
|
||||
return ModelFieldSerializer(value)
|
||||
if isinstance(value, models.manager.BaseManager):
|
||||
return ModelManagerSerializer(value)
|
||||
if isinstance(value, Operation):
|
||||
return OperationSerializer(value)
|
||||
if isinstance(value, type):
|
||||
return TypeSerializer(value)
|
||||
# Anything that knows how to deconstruct itself.
|
||||
if hasattr(value, 'deconstruct'):
|
||||
return DeconstructableSerializer(value)
|
||||
|
||||
# Unfortunately some of these are order-dependent.
|
||||
if isinstance(value, frozenset):
|
||||
return FrozensetSerializer(value)
|
||||
@@ -362,19 +374,8 @@ def serializer_factory(value):
|
||||
return TextTypeSerializer(value)
|
||||
if isinstance(value, decimal.Decimal):
|
||||
return DecimalSerializer(value)
|
||||
if isinstance(value, models.Field):
|
||||
return ModelFieldSerializer(value)
|
||||
if isinstance(value, type):
|
||||
return TypeSerializer(value)
|
||||
if isinstance(value, models.manager.BaseManager):
|
||||
return ModelManagerSerializer(value)
|
||||
if isinstance(value, Operation):
|
||||
return OperationSerializer(value)
|
||||
if isinstance(value, functools.partial):
|
||||
return FunctoolsPartialSerializer(value)
|
||||
# Anything that knows how to deconstruct itself.
|
||||
if hasattr(value, 'deconstruct'):
|
||||
return DeconstructableSerializer(value)
|
||||
if isinstance(value, (types.FunctionType, types.BuiltinFunctionType)):
|
||||
return FunctionTypeSerializer(value)
|
||||
if isinstance(value, collections.Iterable):
|
||||
|
||||
Reference in New Issue
Block a user