0
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 模型?

谢谢。

4

1 回答 1

3

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

Model.get_or_insert (key_name, **kwds)

尝试使用给定的键名获取模型类型的实体。如果存在,get_or_insert() 会简单地返回它。如果它不存在,则创建、存储和返回具有 kwds 中给定种类、名称和参数的新实体。

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

于 2013-02-21T13:11:55.287 回答