The first variant is faster while the second one requires less maintenance if you rename your documents a lot. Both will do the job.
I'd use the first, de-normalised model unless you normally have a lot of revisions per document, modify the common document meta-data quite often, and the meta-data itself is large (in terms of the number of bytes or the number of properties stored). On Jan 13, 10:33 am, Ecir Hana <ecir.h...@gmail.com> wrote: > Hello, > what is the preferred way of retrieving the latest revision of a > document? > (The 'name' doesn't change across the revisions.) > > 1: > class Document(db.Model): > name = db.StringProperty() > revision = db.IntegerProperty() > content = db.TextProperty() > > latest = Document.all().filter('name =', some_name).order('- > revision').get() > > 2: > class Document(db.Model): > name = db.StringProperty() > > class Revision(db.Model): > document = db.ReferenceProperty(Document, > collection_name='revisions') > revision = db.IntegerProperty() > content = db.TextProperty() > > document = Document.all().filter('name =', some_name).get() > latest = document.revisions.order('-revision').get() [1] > > 3: > something different altogether? > > [1] Is it ok to call .get() for the second time? > > Thanks in advance! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---