Code

Ticket #16208: 16208.patch

File 16208.patch, 1.6 KB (added by aaugustin, 3 years ago)
  • django/core/serializers/python.py

     
    110110                    if hasattr(field.rel.to._default_manager, 'get_by_natural_key'): 
    111111                        if hasattr(field_value, '__iter__'): 
    112112                            obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(*field_value) 
    113                             value = getattr(obj, field.rel.field_name) 
    114                             # If this is a natural foreign key to an object that 
    115                             # has a FK/O2O as the foreign key, use the FK value 
    116                             if field.rel.to._meta.pk.rel: 
    117                                 value = value.pk 
    118113                        else: 
    119                             value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value) 
     114                            obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(field_value) 
     115                        value = getattr(obj, field.rel.field_name) 
     116                        # If this is a natural foreign key to an object that 
     117                        # has a FK/O2O as the foreign key, use the FK value 
     118                        if field.rel.to._meta.pk.rel: 
     119                            value = value.pk 
    120120                        data[field.attname] = value 
    121121                    else: 
    122122                        data[field.attname] = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)