我正在阅读 Google 应用引擎并准备一个示例以更好地理解它。
简而言之,用户可以记录一个月中每一天的条目,就像日历一样。用户可以按月查看条目。所以一次不超过30个。
最初我使用过db
并且一对多的关系是直截了当的。
但是一旦我遇到ndb
,我意识到有两种方法可以建模一对多关系。
1) 结构化属性似乎在 User 模型上表现得像一个重复的属性。这是否意味着如果我检索一个用户,我会自动检索她输入的所有记录?(例如全年)但这不是很有效,是吗?我想这样做的好处是您可以在一次读取操作中获得所有相关数据。
from google.appengine.ext import ndb
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
record = ndb.StructuredProperty(Record, repeated=True)
class Record(ndb.Model):
notes = ndb.TextProperty()
2)或者我可以使用更经典的方式:
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
class Record(ndb.Model):
user = ndb.KeyProperty(kind=User)
notes = ndb.TextProperty()
在我的用例中哪种方式更好?