// Store a Model, and call SetKey after generating its key (if it doesn't // have one already). func PutModel(ctx appengine.Context, model models.Model) error { modelKey, err := model.Key() if err == models.NoKeyLoaded { modelKey = datastore.NewIncompleteKey(ctx, model.Kind(), nil) } else if err != nil { panic(err) } key, err := datastore.Put(ctx, modelKey, model) if err == nil { model.SetKey(key) } return err }