Data Namespaces with Google Cloud Datastore
            
            Sun, 30 October 2016
test_model.py
                    from google.appengine.ext import ndb
from lib.model.abstract.abstract_model import AbstractModel
class TestModel(AbstractModel):
    modifiedDate = ndb.DateTimeProperty(indexed=False, auto_now=True, name='md')  # type: datetime.datetime
    name = ndb.StringProperty(indexed=True)
    def as_public(self):
        """
        :rtype: dict
        """
        return {
            u"id": self.get_id(),
            u"name": self.name
        }
                abstract_model.py
                    from google.appengine.ext import ndb
class AbstractModel(ndb.Model):
    def get_id(self):
        """
        :rtype: int
        """
        return self.key.id()
                create_data.py
                    from lib.model.test_model import TestModel a = TestModel() a.name = "default" a.put() a = TestModel(namespace="foo_one") a.name = "one" a.put() a = TestModel(namespace="foo_two") a.name = "two" a.put()
get_data.py
                    from lib.model.test_model import TestModel
data = []
data.append(
    TestModel.query(TestModel.name == "default").fetch(1)[0].as_public()
)
data.append(
    TestModel.query(TestModel.name == "one", namespace="foo_one").fetch(1)[0].as_public()
)
data.append(
    TestModel.query(TestModel.name == "two", namespace="foo_two").fetch(1)[0].as_public()
)
# [
#   {
#     "id": 5629499534213120,
#     "name": "default"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "one"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "two"
#   }
# ]
# ... OR ...
data = []
data.append(
    TestModel.get_by_id(5629499534213120).as_public()
)
data.append(
    TestModel.get_by_id(5629499534213120, namespace="foo_one").as_public()
)
data.append(
    TestModel.get_by_id(5629499534213120, namespace="foo_two").as_public()
)
# [
#   {
#     "id": 5629499534213120,
#     "name": "default"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "one"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "two"
#   }
# ]
# ... OR ...
from google.appengine.ext import ndb
data = []
data.append(
    ndb.Key('TestModel', 5629499534213120).get().as_public()
)
data.append(
    ndb.Key('TestModel', 5629499534213120, namespace='foo_one').get().as_public()
)
data.append(
    ndb.Key('TestModel', 5629499534213120, namespace='foo_two').get().as_public()
)
# [
#   {
#     "id": 5629499534213120,
#     "name": "default"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "one"
#   },
#   {
#     "id": 5629499534213120,
#     "name": "two"
#   }
# ]