Hi all,

Recently I found an issue on using the back reference. Here a simple 
scenario.

Table user (with primary key userId) and table event_registration (with two 
foreign keys, userid referencing the user table and eventId referencing the 
event table, as primary key). And we define the relationship for this two 
as fk_user on event_registration and br_event_registrations on user table.

user_table = Table("user", metadata, 
    Column('userId', BigInteger, Sequence('user_userId_seq'), primary_key=
True),
    ...
)

class User(object):
    pass

mapper(User, user_table, properties={})

event_registration_table = Table("event_registration", metadata, 
    Column('userId', BigInteger, ForeignKey('user.userId'), primary_key=True
),
    Column('eventId', BigInteger, ForeignKey('event.eventId'), primary_key=
True),
    ...
)

class EventRegistration(object):
    pass

mapper(EventRegistration, event_registration_table, properties={
    'fk_user': relationship(User, backref='br_event_registrations'),
    ...
})


A common search query about getting the users who have registered a certain 
or a series of events. For example:
for db_user in session.query(User).join(User.br_event_registrations).filter(
EventRegistrations.eventId < 10).all():
    db_event_registration_list = db_user.br_event_registrations

In the db_event_registration_list, I expect to get all the registrations 
for a certain user and with eventId < 10. However what I actually get are 
all the registrations related to this user.

I have tried using the joinedload and joinedload_all, but it do not solve 
the problem.

I'm wondering if there are some flaws on this database schema or on the 
fetching process itself.

Thanks in advance!

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to