First, remember that db.UserProperty gives you access only to a very
limited set of information about a user with a Google Account. In
other words, you won't be able to manipulate the "user" that you're
pointing to in the datastore - you can only access certain properties
like email, username, and user_id, and you can't change any of those
properties (because they are pulled from the individual's Google
Account). So if you have additional info you'll want to store about a
user (first name, lastname, birthday, whatever) you will probably want
something like:
class User(db.Model) {
first_name = db.StringProperty(),
last_name = db.StringProperty(),
user = db.UserProperty(),
}
As for the rest of your question, it depends on how the data is going
to be accessed by your application. For something like "Account" or
"Config" I imagine you're looking at a one-to-one relationship - one
Account entity per User entity. So you might want to add a property
on your User class like "account = db.ReferenceProperty(Account)".
This is cheaper than having to do a query like Account.all().filter
("user =", users.get_current_user()) every time you want to get the
current user's account info. Same with Config.
For Category, it depends on your usage pattern. For example, if a
user is going to be a part of just a few categories, and you mostly
just want to grab those Category entities based on the currently
logged in user, you could add a property like this to your User model:
categories = db.ListProperty(db.Key). Then if you want to get all of
a user's categories, you do something like db.get
(current_user.categories) which doesn't require a query, and is pretty
quick/cheap. And if you want to query for all the users who are in
category X, you can do this query: User.all().filter("categories =",
category_x_key). Pretty handy.
Recommended reading:
http://code.google.com/appengine/articles/modeling.html
On Jun 22, 7:13 am, Felipe Cavalcante <[email protected]>
wrote:
> Hi,
>
> I want to create an application that has three tables (Categories,
> Account, Config). Every table has a property (user = db.UserProperty)
> to separate the content for a specific user.
>
> My question is: Is that the better form to separate information to
> every user? Is there any way to create a set of entities for every
> single user?
>
> I think I dont undersand (or have faith in) the concepts of BigTable
> yet. :)
>
> Any comment is welcome!
>
> Felipe
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---