1

2 つのモデルの種類CourtDaysと Days があります。

class CourtDays(db.Model):    #parent is Courts
    court = db.ReferenceProperty(Courts)
    reserveMaxTimeBefore = db.ListProperty(int)   
    reserveMinTimeBefore = db.ListProperty(int)
    day = db.StringProperty()

class Days (db.Model):
    court = db.ReferenceProperty(Courts)
    startTime = db.ListProperty(int)
    endTime = db.ListProperty(int)
    startTimeLunch = db.ListProperty(int)
    endTimeLunch = db.ListProperty(int)
    name = db.StringProperty()

「日」と「名前」が週の 7 日間であっても、「日」と「名前」を削除して、代わりに and を使用CourtDaysしてput() の 2 種類を使用できますか? と の両方が同じ ReferencePropertyを持つことに注意してください(また、同じ親も持つことになります)。また、otherと Days には同じ日が含まれていることに注意してください。Dayskey_name="day"key_name="name"CourtDaysDaysCourtDays

また、メソッドget_or_insert()を使用して、たとえば「月曜日」のCourtDaysorエンティティを修正できるが、一意性を維持できるようにすることはできますか? データストアのドキュメントDaysには、「アトミック性を確保するために、get および後続の (可能な) put 操作はトランザクションにラップされています。これは、既存のエンティティを決して上書きしないことを意味します...」と述べているためです。そのフレーズにもかかわらず、これは、「Model.get_or_insert (key_name, **kwds)」の後に a が続き、特定のインスタンスを上書きできることを意味しますか?get_or_insert() put()

4

1 に答える 1

3

2 つのエンティティは、種類、名前空間、または親が異なる場合、同じ key_name を持つことができます。2 つのキーの種類、id、parents、app_id が同じ場合、それらは両方とも同じエンティティを指します。

そのようなキーを持つエンティティが存在する場合、フレーズは既存のエンティティを決して上書きしないということは、エンティティをデータストアに配置しないことを意味すると私は信じていget_or_insertます (プロパティ値は満たされません)。そして、はい、followedput()はそのインスタンスを上書きします。

于 2012-08-18T19:37:08.747 に答える