Say that you have the concept of โcustomโ records that you want to keep in the data warehouse.
class User (db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
created = db.DateTimeProperty(auto_now_add=True)
twitter_oauth_token = db.StringProperty()
twitter_oauth_secret = db.StringProperty()
There are several fields that you would like to use almost always when using a custom object, for example first_name and last_name.
However, there are several fields in which you have only one use case, for example twitter_oauth_token and twitter_oauth_secret, and are somewhat inefficient to worry about serializing and deserializing this data when it is not needed in 95% of cases.
So, if you split your model up:
class User (db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
created = db.DateTimeProperty(auto_now_add=True)
class UserTwitterOauth(db.Model):
oauth_token = db.StringProperty(required=True)
oauth_secret = db.StringProperty(required=True)
created = db.DateTimeProperty(auto_now_add=True)
ReferenceProperty UserTwitterOauth, --, , UserTwitterOauth . , UserTwitterOauth. " "?