在旧的ndb
数据存储区中,可以创建一个StructuredProperty
。这要归功于提供的ndb.Model
。
但是,在新的Cloud Datastore中,ndb不可用。那么,我们如何在新的Cloud Datastore中实现与ndb.StructuredProperty类似的功能?
我有一个具有一个或多个教育和经验对象的JobApplication模型:
class Education:
def __init__(self, institution):
institution = self.institution
class Experience:
def __init__(self, workplace):
workplace = self.workplace
class JobApplication:
def __init__(self):
self.educations = None
self.experiences = None
def add_education(self, education):
self.educations.append(education)
def add_experience(self, experience):
self.experiences.append(experience)
edu_1 = Education('aol')
edu_2 = Education('myspace')
jobapp = JobApplication()
jobapp.add_education(edu_1)
jobapp.add_education(edu_2)
虽然这种方法适用于reading
实体,但是在尝试update
实体时却变得复杂。例如,如何在edu_2
对象中更新JobApplication
?
使用旧的ndb方法非常简单:
class Education(ndb.Model):
institution = ndb.StringProperty()
class JobApplication(ndb.Model)
education = ndb.StructuredProperty(Education, repeated=True)
如何使用新的Cloud Datastore获得此结果?
如注释中所述,您可以在第一代App Engine标准运行时以外的环境中使用google-cloud-ndb。因此,您可以继续使用StructuredProperty。