summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authordjango-bot <ops@djangoproject.com>2022-02-03 20:24:19 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-07 20:37:05 +0100
commit9c19aff7c7561e3a82978a272ecdaad40dda5c00 (patch)
treef0506b668a013d0063e5fba3dbf4863b466713ba /django/core/serializers/python.py
parentf68fa8b45dfac545cfc4111d4e52804c86db68d3 (diff)
downloaddjango-9c19aff7c7561e3a82978a272ecdaad40dda5c00.tar.gz
Refs #33476 -- Reformatted code with Black.
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py66
1 files changed, 47 insertions, 19 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 0ceb676e90..a3918bf9d2 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -32,10 +32,10 @@ class Serializer(base.Serializer):
self._current = None
def get_dump_object(self, obj):
- data = {'model': str(obj._meta)}
- if not self.use_natural_primary_keys or not hasattr(obj, 'natural_key'):
+ data = {"model": str(obj._meta)}
+ if not self.use_natural_primary_keys or not hasattr(obj, "natural_key"):
data["pk"] = self._value_from_field(obj, obj._meta.pk)
- data['fields'] = self._current
+ data["fields"] = self._current
return data
def _value_from_field(self, obj, field):
@@ -49,7 +49,9 @@ class Serializer(base.Serializer):
self._current[field.name] = self._value_from_field(obj, field)
def handle_fk_field(self, obj, field):
- if self.use_natural_foreign_keys and hasattr(field.remote_field.model, 'natural_key'):
+ if self.use_natural_foreign_keys and hasattr(
+ field.remote_field.model, "natural_key"
+ ):
related = getattr(obj, field.name)
if related:
value = related.natural_key()
@@ -61,13 +63,19 @@ class Serializer(base.Serializer):
def handle_m2m_field(self, obj, field):
if field.remote_field.through._meta.auto_created:
- if self.use_natural_foreign_keys and hasattr(field.remote_field.model, 'natural_key'):
+ if self.use_natural_foreign_keys and hasattr(
+ field.remote_field.model, "natural_key"
+ ):
+
def m2m_value(value):
return value.natural_key()
+
else:
+
def m2m_value(value):
return self._value_from_field(value, value._meta.pk)
- m2m_iter = getattr(obj, '_prefetched_objects_cache', {}).get(
+
+ m2m_iter = getattr(obj, "_prefetched_objects_cache", {}).get(
field.name,
getattr(obj, field.name).iterator(),
)
@@ -77,14 +85,16 @@ class Serializer(base.Serializer):
return self.objects
-def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options):
+def Deserializer(
+ object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options
+):
"""
Deserialize simple Python objects back into Django ORM instances.
It's expected that you pass the Python objects themselves (instead of a
stream or a string) to the constructor
"""
- handle_forward_references = options.pop('handle_forward_references', False)
+ handle_forward_references = options.pop("handle_forward_references", False)
field_names_cache = {} # Model: <list of field_names>
for d in object_list:
@@ -97,11 +107,13 @@ def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False
else:
raise
data = {}
- if 'pk' in d:
+ if "pk" in d:
try:
- data[Model._meta.pk.attname] = Model._meta.pk.to_python(d.get('pk'))
+ data[Model._meta.pk.attname] = Model._meta.pk.to_python(d.get("pk"))
except Exception as e:
- raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), None)
+ raise base.DeserializationError.WithData(
+ e, d["model"], d.get("pk"), None
+ )
m2m_data = {}
deferred_fields = {}
@@ -119,21 +131,33 @@ def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False
field = Model._meta.get_field(field_name)
# Handle M2M relations
- if field.remote_field and isinstance(field.remote_field, models.ManyToManyRel):
+ if field.remote_field and isinstance(
+ field.remote_field, models.ManyToManyRel
+ ):
try:
- values = base.deserialize_m2m_values(field, field_value, using, handle_forward_references)
+ values = base.deserialize_m2m_values(
+ field, field_value, using, handle_forward_references
+ )
except base.M2MDeserializationError as e:
- raise base.DeserializationError.WithData(e.original_exc, d['model'], d.get('pk'), e.pk)
+ raise base.DeserializationError.WithData(
+ e.original_exc, d["model"], d.get("pk"), e.pk
+ )
if values == base.DEFER_FIELD:
deferred_fields[field] = field_value
else:
m2m_data[field.name] = values
# Handle FK fields
- elif field.remote_field and isinstance(field.remote_field, models.ManyToOneRel):
+ elif field.remote_field and isinstance(
+ field.remote_field, models.ManyToOneRel
+ ):
try:
- value = base.deserialize_fk_value(field, field_value, using, handle_forward_references)
+ value = base.deserialize_fk_value(
+ field, field_value, using, handle_forward_references
+ )
except Exception as e:
- raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), field_value)
+ raise base.DeserializationError.WithData(
+ e, d["model"], d.get("pk"), field_value
+ )
if value == base.DEFER_FIELD:
deferred_fields[field] = field_value
else:
@@ -143,7 +167,9 @@ def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False
try:
data[field.name] = field.to_python(field_value)
except Exception as e:
- raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), field_value)
+ raise base.DeserializationError.WithData(
+ e, d["model"], d.get("pk"), field_value
+ )
obj = base.build_instance(Model, data, using)
yield base.DeserializedObject(obj, m2m_data, deferred_fields)
@@ -154,4 +180,6 @@ def _get_model(model_identifier):
try:
return apps.get_model(model_identifier)
except (LookupError, TypeError):
- raise base.DeserializationError("Invalid model identifier: '%s'" % model_identifier)
+ raise base.DeserializationError(
+ "Invalid model identifier: '%s'" % model_identifier
+ )