获取或创建匹配的键和用户(Python - App Engine)

1 投票
1 回答
516 浏览
提问于 2025-04-16 10:42

我在使用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()

撰写回答