google-app-engine - NDB 数据存储 : Data Modeling for a Job website

标签 google-app-engine data-structures app-engine-ndb

为具有以下元素的招聘网站建模数据的最佳方法是什么:

  • 两种类型的用户帐户:JobSeekersEmployers
  • 雇主可以创建 JobPost实体。
  • 每个JobSeeker可以创建一个Resume实体,以及许多JobApplication实体。
    • JobSeekers可以创建一个JobApplicationJobPost 相关的实体实体。
      • 一个JobPost实体可能会收到许多JobApplication实体。
      • 求职者只能创建一个JobApplication实体每JobPost实体。
    • 一个Resume包含 Education 的一个或多个实例, Experience ,使用ndb.StructuredProperty(repeated = True)
      • 每个Education包含以下ndb.StringProperty字段:institution , certification , area_of_study
      • 虽然每个 Experience包含:workplace , job_title .

最佳答案

这是满足您要求的骨架模型:

class Employer(ndb.Model):
    user = ndb.UserProperty()

class JobPost(ndb.Model):
    employer = ndb.KeyProperty(kind=Employer)

class JobSeeker(ndb.Model):
    user = ndb.UserProperty()
    def apply(self, job_post):
        if JobApplication.query(JobApplication.job_seeker == self.key,
                                JobApplication.job_post == job_post).count(1) == 1:
            raise Exception("Already applied for this position")
        ...

class Resume(ndb.Model):
    job_seeker = ndb.KeyProperty(JobSeeker)
    education = ndb.JsonProperty()
    experience = ndb.JsonProperty()

class JobApplication(ndb.Model):
    job_seeker = ndb.KeyProperty(JobSeeker)
    job_post = ndb.KeyProperty(JobPost)

注释:

  • EmployerJobSeeker 具有内置的 UserProperty 来识别并允许他们登录。

    <
  • Resume 使用 JsonProperty 进行教育经验,以允许将来有更多领域。您可以将 Python 字典分配给该字段,例如 resume.education = {'institution': 'name', 'certification': 'certificate', 'area_of_study': 'major', 'year_graduated': 2013, ...} (我个人发现 StructuredProperty 弊大于利,我现在避免使用它。)

  • 可以使用检查 JobApplication 的 apply() 方法将 JobSeeker 限制为只有一个 JobApplication 现有应用程序的表。

关于google-app-engine - NDB 数据存储 : Data Modeling for a Job website,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251196/

相关文章:

python - GAE : use static HTML file vs database to serve contents

python - 在 Google App Engine 中使用嵌套 AND/OR 进行祖先查询

python - 在 google app engine 上进行 url 映射之前运行代码

Java排序算法类数据结构项目遇到的问题

django - 如何在 appengine 上的 django non-rel 上进行空间查询

c# - 将 C#(前端)连接到 apache/php/python(后端)

algorithm - 如何将数组间隔中的所有值递增给定数量

google-app-engine - 在谷歌应用程序引擎上创建复合或复合键

node.js - 使用HTTPS时redirect_uri_mismatch ://on Google App Engine

python-2.7 - GAE云数据存储: Get most frequently read models