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)

こんにちは私はこの2つのモデルと1対1の関係を作りたいと思います。ユーザーごとに複数の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 に答える