获取或创建匹配的键和用户(Python - App Engine)
我在使用Python的Google App Engine时,想用'get_or_insert'来匹配一个记录和用户。
我有下面这些模型,我想检查一个用户是否已经在BookUser里有了某本书的记录。如果他们已经有记录了,就获取相关的详细信息。如果没有记录,就用一些数据创建一个新的记录,并把它和这本书以及用户关联起来。
class User(db.Model):
id = db.StringProperty()
name = db.StringProperty()
image = db.BlobProperty(default=None)
class Book(db.Model):
image = db.BlobProperty()
date_added = db.DateTimeProperty(auto_now_add=True)
is_active = db.BooleanProperty(default=True)
class BookUser(db.Model):
book = db.ReferenceProperty(Book)
user = db.ReferenceProperty(User)
is_active = db.BooleanProperty(default=True)
我还在努力理解App Engine、键值这些东西。任何帮助都非常感谢!
d
1 个回答
1
你可以把BookUser这个实体的关键字设置为用户和书籍关键字的组合,这样就能很简单地让这个关系变得唯一。
bookuser_key_name = "%s:%s" % (str(book_key.id_or_name()), str(user_key.id_or_name()))
bookuser = BookUser.get_or_insert(bookuser_key_name)
# set your values...
bookuser.put()