gpt4 book ai didi

python - GAE python : How to use NDB KeyProperty models for many-to-one relationship?

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:41 25 4
gpt4 key购买 nike

有关于如何set的帖子, get , KeyProperty/StructuredProperty ,但没有任何内容告诉我如何使用 NDB 进行多对一建模。

我有两个模型:

class Department(ndb.Model):
department_id = ndb.IntegerProperty()
name = ndb.StringProperty()

class Student(ndb.Model):
student_id = ndb.IntegerProperty()
name = ndb.StringProperty()
dept = ndb.KeyProperty(Kind=Department)

如何确保多对一,即每当插入学生记录时,它必须验证部门 key w.r.t 到部门数据存储?

如何插入学生记录以确保多对一关系?

选项 1:

# Insert student record without checking for valid dept id. GAE automatically validates
student = Student(student_id=...., dept=ndb.Key(Department, input_dept_id))

选项 2:

# check for valid dept id and then insert student record
dept_key = ndb.Key(Department, input_dept_id)
if(dept_key.get()):
student = Student(student_id=...., dept=dept_key)

我尝试了选项 1,其中 dept_id 不在部门实体中,它能够插入该学生实体。我对 GAE 还很陌生。

最佳答案

根据文档 (https://cloud.google.com/appengine/docs/python/datastore/entities),“Datastore API 不区分创建新实体和更新现有实体”。也就是说,put() 方法将创建一个不存在的实体或更新一个现有实体。

因此,选项 2 似乎是可行的方法。 (选项1确实没有提供任何验证)

关于python - GAE python : How to use NDB KeyProperty models for many-to-one relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39193684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com