Hi,
We have a relationship that looks something like this:
User 1 - * Posts
Posts can have various states, let's say 'DRAFT', 'LIVE', 'DELETED'.
Sometimes, we want to get all of the posts in existence for a user by doing:
user.all_posts
Sometimes, we just want to get posts that are not deleted:
user.open_posts
We opted to do this by specifying the primary_join on the relationship,
thus:
open_posts = relationship("Post", = "and_(User.id==Post.user_id,"ยท
"or_(Post.status=='DRAFT',
Post.status=='LIVE'))")
all_posts = relationship("Post")
(as suggested here:
http://stackoverflow.com/questions/2863786/how-do-i-specify-a-relation-in-sqlalchemy-where-one-condition-requires-a-column
)
This worked, but we now have a problem in some of our processing - when we
use user.open_posts before changes have been sent to the database, all
posts including those deleted are returned.
Putting in session.refresh at various points now seems to do the trick, but
I wanted to ask:
1. Is our approach generally correct as a way of doing filtered
relationships/joins
2. Are session.refresh calls the right way to make it work while changes
are still in memory
Thanks for any ideas,
Ben
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" 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/sqlalchemy?hl=en.