diff --git a/gcloud/datastore/entity.py b/gcloud/datastore/entity.py index a81adaf7fc6f..5c939493c9d6 100644 --- a/gcloud/datastore/entity.py +++ b/gcloud/datastore/entity.py @@ -222,9 +222,12 @@ def save(self): transaction.add_auto_id_entity(self) if isinstance(key_pb, datastore_pb.Key): - path = [ - {'kind': element.kind, 'id': element.id, 'name': element.name} - for element in key_pb.path_element] + path = [] + for element in key_pb.path_element: + key_part = {} + for descriptor, value in element._fields.items(): + key_part[descriptor.name] = value + path.append(key_part) # Update the path (which may have been altered). self._key = key.path(path) diff --git a/gcloud/datastore/test_entity.py b/gcloud/datastore/test_entity.py index d4c135086eb7..d53f32e6e7d0 100644 --- a/gcloud/datastore/test_entity.py +++ b/gcloud/datastore/test_entity.py @@ -182,7 +182,7 @@ def test_save_w_returned_key(self): self.assertEqual(entity['foo'], 'Foo') self.assertEqual(connection._saved, (_DATASET_ID, 'KEY', {'foo': 'Foo'})) - self.assertEqual(key._path, [{'kind': _KIND, 'id': _ID, 'name': ''}]) + self.assertEqual(key._path, [{'kind': _KIND, 'id': _ID}]) def test_delete_no_key(self): from gcloud.datastore.entity import NoKey