Got it. Many thanks!
On Tue, Feb 22, 2011 at 7:02 PM, Michael Bayer <mike...@zzzcomputing.com>wrote: > > one side scalar, one side collection. the collection side you use > .append(). You decide which end is the non-collection by setting > remote_side, in your code below its "invitee". > > > On Feb 22, 2011, at 9:59 PM, Ryan McKillen wrote: > > I added that in because without it I get: > TypeError: Incompatible collection type: User is not list-like > > > On Tue, Feb 22, 2011 at 6:47 PM, Michael Bayer > <mike...@zzzcomputing.com>wrote: > >> >> On Feb 22, 2011, at 9:03 PM, Ryan McKillen wrote: >> >> Mike, thanks a lot. Big help. I'm almost there. >> >> This seems to do the trick: >> >> usersid = Column(Integer, primary_key=True, key='id') >> inviter_id = Column(Integer, ForeignKey('users.id')) >> >> inviter = relationship('User', >> uselist = False, >> backref = backref('invitee', remote_side=usersid, uselist=True), >> ) >> >> When there are two users, one being the inviter (parent) and the other >> being the invitee (child), it works like a charm: >> >> self.assertEqual(invitee1.inviter.id, inviter.id) >> self.assertEqual(inviter.invitee[0].id, invitee1.id) >> >> But add a third user, one being the inviter and two being the invitees, >> invitee1.inviter is None. >> >> >> probably because of that uselist=False, which makes it into a one-to-one. >> Adjacency list is a standard single foreign key relationship - >> one-to-many on one side, many-to-one on the other. >> >> There's an illustration of exactly how the data resides in the table: >> >> >> http://www.sqlalchemy.org/docs/orm/relationships.html#adjacency-list-relationships >> >> >> >> >> Any ideas for me? >> >> >> On Tue, Feb 22, 2011 at 7:54 AM, Michael Bayer >> <mike...@zzzcomputing.com>wrote: >> >>> >>> On Feb 20, 2011, at 10:12 PM, Ryan wrote: >>> >>> I'm attempting a self-referential mapping on a Client object that >>> includes these two columns: >>> >>> id = Column(Integer, primary_key=True) >>> inviter_id = Column(Integer, ForeignKey('users.id'), nullable=True) >>> >>> >>> Started here with no luck: >>> >>> inviter = relationship('Client', primaryjoin='Client.id == >>> Client.inviter_id', uselist=False) >>> >>> >>> Then read about self-referential mapping in the docs and tried with no >>> luck: >>> >>> inviter = relationship('Client', remote_side='Client.id', uselist=False) >>> >>> >>> And this with an error: >>> >>> relationship('Client', remote_side=[Client.id], uselist=False) >>> >>> >>> Would be a great help to see how this is done in a declarative style. >>> Thanks! >>> >>> >>> >>> the last example in the section >>> http://www.sqlalchemy.org/docs/orm/relationships.html#adjacency-list-relationshipsillustrates >>> a declarative self-referential relationship. Note that the "id" >>> Column object can be referenced directly when you're inside the class >>> declaration itself. >>> >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to sqlalchemy@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/sqlalchemy?hl=en. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to sqlalchemy@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/sqlalchemy?hl=en. >>> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To post to this group, send email to sqlalchemy@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To post to this group, send email to sqlalchemy@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. >> > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.