diff options
author | Dražen Odobašić <dodobas@candela-it.com> | 2015-09-11 19:33:12 -0400 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-09-12 11:40:50 -0400 |
commit | b1e33ceceda1e75ff68c7deed8f6659683a195d3 (patch) | |
tree | e4e446f69194f2dc3c9c7ee3ecf48290ea8d4d31 /django/core/serializers/python.py | |
parent | 84b0a8d2aad042fb573df5055b6153770d0929ac (diff) | |
download | django-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.py | 22 |
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: |