summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authorDražen Odobašić <dodobas@candela-it.com>2015-09-11 19:33:12 -0400
committerTim Graham <timograham@gmail.com>2015-09-12 11:40:50 -0400
commitb1e33ceceda1e75ff68c7deed8f6659683a195d3 (patch)
treee4e446f69194f2dc3c9c7ee3ecf48290ea8d4d31 /django/core/serializers/python.py
parent84b0a8d2aad042fb573df5055b6153770d0929ac (diff)
downloaddjango-b1e33ceceda1e75ff68c7deed8f6659683a195d3.tar.gz
Fixed #23395 -- Limited line lengths to 119 characters.
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index ff506d50cb..b64169bb62 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -124,14 +124,15 @@ def Deserializer(object_list, **options):
# Handle M2M relations
if field.remote_field and isinstance(field.remote_field, models.ManyToManyRel):
- if hasattr(field.remote_field.model._default_manager, 'get_by_natural_key'):
+ model = field.remote_field.model
+ if hasattr(model._default_manager, 'get_by_natural_key'):
def m2m_convert(value):
if hasattr(value, '__iter__') and not isinstance(value, six.text_type):
- return field.remote_field.model._default_manager.db_manager(db).get_by_natural_key(*value).pk
+ return model._default_manager.db_manager(db).get_by_natural_key(*value).pk
else:
- return force_text(field.remote_field.model._meta.pk.to_python(value), strings_only=True)
+ return force_text(model._meta.pk.to_python(value), strings_only=True)
else:
- m2m_convert = lambda v: force_text(field.remote_field.model._meta.pk.to_python(v), strings_only=True)
+ m2m_convert = lambda v: force_text(model._meta.pk.to_python(v), strings_only=True)
try:
m2m_data[field.name] = []
@@ -142,21 +143,24 @@ def Deserializer(object_list, **options):
# Handle FK fields
elif field.remote_field and isinstance(field.remote_field, models.ManyToOneRel):
+ model = field.remote_field.model
if field_value is not None:
try:
- if hasattr(field.remote_field.model._default_manager, 'get_by_natural_key'):
+ default_manager = model._default_manager
+ field_name = field.remote_field.field_name
+ if hasattr(default_manager, 'get_by_natural_key'):
if hasattr(field_value, '__iter__') and not isinstance(field_value, six.text_type):
- obj = field.remote_field.model._default_manager.db_manager(db).get_by_natural_key(*field_value)
+ obj = default_manager.db_manager(db).get_by_natural_key(*field_value)
value = getattr(obj, field.remote_field.field_name)
# If this is a natural foreign key to an object that
# has a FK/O2O as the foreign key, use the FK value
- if field.remote_field.model._meta.pk.remote_field:
+ if model._meta.pk.remote_field:
value = value.pk
else:
- value = field.remote_field.model._meta.get_field(field.remote_field.field_name).to_python(field_value)
+ value = model._meta.get_field(field_name).to_python(field_value)
data[field.attname] = value
else:
- data[field.attname] = field.remote_field.model._meta.get_field(field.remote_field.field_name).to_python(field_value)
+ data[field.attname] = model._meta.get_field(field_name).to_python(field_value)
except Exception as e:
raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), field_value)
else: