On 28/12/2009 15:31, Michael Bayer wrote: > moggie wrote: > >> Greetings, >> >> Hope you are well. In my example I have two objects 'HttpTest' and >> 'SmtpTest' that both inherit from their super-class called 'Test'. >> >> Due to the nature of the relationship, 'Test' will never actually be >> stored in the database so I've not mapped that. However, a mixture of >> 'HttpTest' and 'SmtpTest' objects are both to be stored in the >> hosttest_table, thus I created a mapping for them like this: >> >> httptest_mapper = mapper(HttpTest, hosttest_table, \ >> polymorphic_on=hosttest_table.c.type, >> polymorphic_identity='http') >> smtptest_mapper = mapper(SmtpTest, hosttest_table, \ >> polymorphic_on=hosttest_table.c.type, >> polymorphic_identity='smtp') >> >> Unfortunately when I do, I get this error message: >> >> No such polymorphic_identity 'smtp' is defined >> >> I was hoping SQLA would understand this and let me pack the two >> objects into the same table, but for some reason it doesn't like it. >> >> If someone could please give me some pointers on how to proceed, it >> would be greatly appreciated. Thank you in advance for your time and >> consideration. >> > the pattern you're attempting here is called "single table inheritance". > You will need to define a common base class between your two classes, but > it never need be instantiated directly. Full documentation on how to use > this approach is at > http://www.sqlalchemy.org/docs/05/mappers.html#single-table-inheritance
Hi Michael, Thank you very much for getting back to me. I think I realise now that to make this work I *must* also map the super-class of the polymorphic objects and not map just the ones I want to use. This seems to be working for me now. Thanks again :) -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.