diff --git a/mongoengine/fields.py b/mongoengine/fields.py index a56bad83..b192961f 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -1449,9 +1449,9 @@ class SequenceField(BaseField): data = collection.find_one({"_id": sequence_id}) if data: - return data['next']+1 + return self.value_decorator(data['next']+1) - return 1 + return self.value_decorator(1) def get_sequence_name(self): if self.sequence_name: diff --git a/tests/fields/fields.py b/tests/fields/fields.py index a9fed3cf..e803af84 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -1914,6 +1914,21 @@ class FieldTest(unittest.TestCase): self.db['mongoengine.counters'].drop() self.assertEqual(Person.id.get_next_value(), 1) + + class Person(Document): + id = SequenceField(primary_key=True, value_decorator=str) + name = StringField() + + self.db['mongoengine.counters'].drop() + Person.drop_collection() + + for x in xrange(10): + Person(name="Person %s" % x).save() + + self.assertEqual(Person.id.get_next_value(), '11') + self.db['mongoengine.counters'].drop() + + self.assertEqual(Person.id.get_next_value(), '1') def test_sequence_field_sequence_name(self): class Person(Document):