From 10de2a837f580d76a480a9e0b974cecd2d1d26cb Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 18 Mar 2010 15:22:15 +0000 Subject: Fixed #13030 -- Corrected natural key deserialization to subclasses. Thanks to yishaibeeri for the report and test case. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12804 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/serializers/python.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'django/core/serializers/python.py') diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 3defb6aa27..a68ea21f78 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -111,6 +111,10 @@ def Deserializer(object_list, **options): if hasattr(field_value, '__iter__'): obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(*field_value) value = getattr(obj, field.rel.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.rel.to._meta.pk.rel: + value = value.pk else: value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value) data[field.attname] = value -- cgit v1.3