如何在python谷歌appengine数据存储区做一对一的关系?

时间:2013-02-21 11:53:15

标签: python google-app-engine google-cloud-datastore

class User(db.Model):
    username = db.StringProperty(required=True)
    password = db.StringProperty(required=True)
    email_address = db.StringProperty(required=True)
    profile_img = db.BlobProperty()

class Book(db.Model):
    user = db.ReferenceProperty(User, collection_name='books')
    #first build
    Book_1 = db.BooleanProperty(default=False) 
    Book_2 = db.BooleanProperty(default=False) 
    Book_3 = db.BooleanProperty(default=False) 
    Book_4 = db.BooleanProperty(default=False)

您好我想与这两个模型建立一对一的关系。有什么我可以做的,以便它永远不会为每个用户创建多个Book模型吗?

感谢。

1 个答案:

答案 0 :(得分:3)

我认为get or insert可能对此有用。也许在您创建用户模型时,您可以使用用户名(可能是唯一的)get_or_insert书籍模型作为关键,显然是第一次创建它并随后获取它。

Model.get_or_insert (key_name, **kwds)
  

尝试使用给定的密钥获取模型类型的实体   名称。如果存在,get_or_insert()只返回它。如果没有   存在,一个在kwds中具有给定种类,名称和参数的新实体   创建,存储和返回。

     

get和后续(可能)put操作包含在a中   事务确保原子性。这意味着get_or_insert()会   永远不会覆盖现有实体,并且会插入新实体   并且只有当没有具有给定种类和名称的实体时才存在。

相关问题