Hi Brice, Yours is another good case of the 'Generic Associations' or 'Polymorphic Association' pattern which comes up quite often. Here's a link to some docs that will get you going on a good solution that keeps the database normalized.
http://docs.sqlalchemy.org/en/rel_0_8/orm/examples.html#generic-associations If that doesn't get you off and running, especially the example in discriminator_on_association.py, continue this thread or pop into the IRC channel. - ejo On Wednesday, November 28, 2012 1:20:52 PM UTC-8, deBrice wrote: > > So here is my solution, > > https://gist.github.com/4164619 > > Hope it helps others to get an insight on generic relation in SQLAlchemy. > > > On Tue, Nov 27, 2012 at 7:41 AM, Brice Leroy <bbrri...@gmail.com<javascript:> > > wrote: > >> Thank you for the advice Robert. As I'm using flask I'm not sure how >> adaptable the ZCA would be. I'll try to understand the logic behind it and >> see if I can replicate it within my models. >> >> >> On Tue, Nov 27, 2012 at 7:12 AM, Robert Forkel >> <xrot...@googlemail.com<javascript:> >> > wrote: >> >>> hi, >>> i used to do something like this, i.e. adding information about urls, >>> views, etc. to sqlalchemy models, but found this to be inflexibel. Now >>> I keep URL-related information in the web app's routing component, and >>> to solve problems like the one you pose, I use zca adapters [1] (which >>> is easier when using pyramid, because you already have a component >>> registry available). So with this technology you'd register the same >>> FeedItem class as adapter for the various sqlalchemy models, which >>> means that at adaption time, the object to adapt will be passed to >>> you. >>> regards >>> robert >>> >>> [1] http://www.muthukadan.net/docs/zca.html >>> >>> >>> On Tue, Nov 27, 2012 at 3:58 PM, Brice Leroy >>> <bbrri...@gmail.com<javascript:>> >>> wrote: >>> > Hello everybody, >>> > >>> > It's about brainstorming on an elegant solution. I previously posted >>> this >>> > question on the Flask mailing list, and I got advised to post it on >>> > SQLAlchemy list... which make more sense I admit. So here is my issue: >>> > >>> > I have N different classes: >>> > >>> > class Comment(Models): >>> > author_id = Integer >>> > comment = String >>> > creation_date = Date >>> > >>> > class Picture(Models): >>> > author_id = Integer >>> > image = File >>> > creation_date = Date >>> > ... >>> > >>> > now let say, I have a "follow" feature, allowing a user X to get >>> updates >>> > when Y (the user followed by X) does something (creepy...). >>> > >>> > So far I came up with something like that: >>> > >>> > class FeedItem(Model) >>> > table = String >>> > key = Integer >>> > creation_date = Date >>> > >>> > def url(self): >>> > #get object by querying self.table with self.key >>> > object = self.get_an_object(table=self.table, key=self.key) >>> > return object.view_url >>> > >>> > and then add this property to Comment and Picture classes: >>> > >>> > @property >>> > def view_url(self): >>> > return url_for('view_function_name', self.id) >>> > >>> > - What would be your way of dealing with this kind of "open/generic" >>> > relationship items? >>> > >>> > - How would you manage automatic deletion of a FeedItem when the >>> object it >>> > points to get destroyed? (I'm thinking attaching function on delete >>> event to >>> > classes) >>> > >>> > - Would you create as many FeedItem per follower, or use a Table to >>> link >>> > them to followers, therefore deleting a FeedItem would automatically >>> delete >>> > the relation record from the Table.? >>> > >>> > Thank you, >>> > >>> > -- >>> > Brice >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "sqlalchemy" group. >>> > To post to this group, send email to >>> > sqlal...@googlegroups.com<javascript:> >>> . >>> > To unsubscribe from this group, send email to >>> > sqlalchemy+...@googlegroups.com <javascript:>. >>> > 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 sqlal...@googlegroups.com<javascript:> >>> . >>> To unsubscribe from this group, send email to >>> sqlalchemy+...@googlegroups.com <javascript:>. >>> For more options, visit this group at >>> http://groups.google.com/group/sqlalchemy?hl=en. >>> >>> >> >> >> -- >> -- >> Brice >> >> > > > -- > Brice > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/fIkNEtwTaH8J. 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.