From babbc8bcd64893a328f34d1cde17dd7125b6dd2f Mon Sep 17 00:00:00 2001 From: Ronald van Rij Date: Mon, 5 May 2014 16:39:55 +0200 Subject: [PATCH] When using autogenerated document ids in a sharded collection, do set that id back into the Document --- mongoengine/document.py | 2 +- tests/document/instance.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mongoengine/document.py b/mongoengine/document.py index 114778eb..e09503c8 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -293,7 +293,7 @@ class Document(BaseDocument): raise NotUniqueError(message % unicode(err)) raise OperationError(message % unicode(err)) id_field = self._meta['id_field'] - if id_field not in self._meta.get('shard_key', []): + if created or id_field not in self._meta.get('shard_key', []): self[id_field] = self._fields[id_field].to_python(object_id) self._clear_changed_fields() diff --git a/tests/document/instance.py b/tests/document/instance.py index 07db85a0..14cc0074 100644 --- a/tests/document/instance.py +++ b/tests/document/instance.py @@ -2281,6 +2281,8 @@ class InstanceTest(unittest.TestCase): log.machine = "Localhost" log.save() + self.assertIsNotNone(log.id) + log.log = "Saving" log.save() @@ -2304,6 +2306,8 @@ class InstanceTest(unittest.TestCase): log.machine = "Localhost" log.save() + self.assertIsNotNone(log.id) + log.log = "Saving" log.save()