get_by_id method on Model classes in Google App Engine Datastore

Posted by tarn on Stack Overflow See other posts from Stack Overflow or by tarn
Published on 2009-03-16T04:41:19Z Indexed on 2010/12/25 14:54 UTC
Read the original article Hit count: 215

I'm unable to workout how you can get objects from the Google App Engine Datastore using get_by_id. Here is the model

from google.appengine.ext import db

class Address(db.Model):
  description = db.StringProperty(multiline=True)
  latitude = db.FloatProperty()
  longitdue = db.FloatProperty()
  date = db.DateTimeProperty(auto_now_add=True)

I can create them, put them, and retrieve them with gql.

address = Address()
address.description = self.request.get('name')
address.latitude = float(self.request.get('latitude'))
address.longitude = float(self.request.get('longitude'))
address.put()

A saved address has values for

>> address.key()
aglndWVzdGJvb2tyDQsSB0FkZHJlc3MYDQw
>> address.key().id()
14

I can find them using the key

from google.appengine.ext import db
address = db.get('aglndWVzdGJvb2tyDQsSB0FkZHJlc3MYDQw')

But can't find them by id

>> from google.appengine.ext import db
>> address = db.Model.get_by_id(14)

The address is None, when I try

>> Address.get_by_id(14)
AttributeError: type object 'Address' has no attribute 'get_by_id'

How can I find by id?

EDIT: It turns out I'm an idiot and was trying find an Address Model in a function called Address. Thanks for your answers, I've marked Brandon as the correct answer as he got in first and demonstrated it should all work.

© Stack Overflow or respective owner

Related posts about google-app-engine

Related posts about gae-datastore