【发布时间】:2012-09-27 00:10:17
【问题描述】:
我正在使用带有 python 2.7 和 webapp2 框架的 appengine。我不使用 ndb.model。
我有以下型号:
class Story(db.Model);
name = db.StringProperty()
class UserProfile(db.Model):
name = db.StringProperty()
user = db.UserProperty()
class Tracking(db.Model):
user_profile = db.ReferenceProperty(UserProfile)
story = db.ReferenceProperty(Story)
upvoted = db.BooleanProperty()
flagged = db.BoolenProperty()
用户可以对故事进行投票和/或标记,但只能进行一次。因此,我提出了上述模型。
现在,当用户点击upvote 链接时,我会在数据库上尝试查看用户是否还没有投票,因此我会尝试执行以下操作:
获取ID为
up = db.get(db.Key.from_path('UserProfile', uid))的用户实例然后获取故事实例如下
s_ins = db.get(db.Key.from_path('Story', uid))现在轮到检查是否存在基于这两个的
Tracking,如果是则不允许投票,否则允许他投票并更新跟踪 实例。
在给定 ID(db.key().id()) 为 user_profile 和 story 的情况下,获取 Tracking 实例最方便的方法是什么?
保存Tracking 模型(已给出用户个人资料 ID 和故事 ID)最方便的方法是什么?
有没有更好的方法来实现跟踪?
【问题讨论】:
标签: python database google-app-engine app-engine-ndb