summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2007-03-13 00:59:34 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2007-03-13 00:59:34 +0000
commit375c3edf6edc0bb9f3e726f67c70fa524556713b (patch)
treed3e78e7c18c4ae5ff83a5567e88966799c87d007 /django/core/serializers/python.py
parent400ee0266149309ccf1d36886c4a8a0524f14efc (diff)
Added various fixes to serializer implementations. Fixes mostly deal with handling nulls, non-integer primary key values (e.g., OneToOne fields or strings), and reconstruction of primary key references in related fields.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4718 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index a9baa01d5a..29ce6bf9bd 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -57,7 +57,7 @@ def Deserializer(object_list, **options):
for d in object_list:
# Look up the model and starting build a dict of data for it.
Model = _get_model(d["model"])
- data = {Model._meta.pk.attname : d["pk"]}
+ data = {Model._meta.pk.attname : Model._meta.pk.to_python(d["pk"])}
m2m_data = {}
# Handle each field
@@ -70,16 +70,17 @@ def Deserializer(object_list, **options):
# Handle M2M relations
if field.rel and isinstance(field.rel, models.ManyToManyRel):
pks = []
+ m2m_convert = field.rel.to._meta.pk.to_python
for pk in field_value:
if isinstance(pk, unicode):
- pks.append(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET)))
+ pks.append(m2m_convert(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET))))
else:
- pks.append(pk)
+ pks.append(m2m_convert(pk))
m2m_data[field.name] = pks
# Handle FK fields
elif field.rel and isinstance(field.rel, models.ManyToOneRel):
- data[field.attname] = field_value
+ data[field.attname] = field.rel.to._meta.pk.to_python(field_value)
# Handle all other fields
else: