Step 1: Data and Purpose
There is a simple data model that reflects the purpose of the application
What will I do with this application? I will create lists, with items. So, let's define List and Item, two different Datastore models derived from the 'db' class ... db is a Google App Engine wrapper for the Datastore API, which reads and writes from Google's Big Table (or, in the development environment on your own machine, a simulation of Big Table).
Code Note: the relationship between List and Item is made explicit by Item's "ReferenceProperty (List)" declaration, in bold. When the time comes, Item's list_key will be assigned the instance of List that the Item belongs to.
class List(db.Model):
name = db.StringProperty(multiline=True)
class Item(db.Model):
list_key = db.ReferenceProperty(List)
name = db.StringProperty(multiline=True)
General Note: if you are using these steps to guide the development of a different application, it's good to keep data models that are understood visually separate from your exploratory models, or your exploratory properties.