http://groups.google.com/group/sqlelixir/msg/3fe5762354ccc30d
On Feb 5 2009, 5:45 pm, Tvrtko <qvx3...@gmail.com> wrote:
> > There ought to be a way for the user to tell "I know what I'm doing",
> > and an option only for that seems way overkill.
>
> Well, this covers it nicely:
>
> 1. If users says polymorphic=True, then it behaves like now: raises an
> exception when there is a "row_type" column present. This prevents
> unexpected behaviour.
>
> 2. But, if user says polymorphic="anything", than the user knows what
> column he wants to use for polymorphic column, and if he created such
> column in advance he knows what it will be used for. If there is no
> such
> column, we can add it - just like now.
Tvrtko's suggestion seems reasonable. Did anything come of this? I've just hit the problem because I've existing data which was mapped as follows:
class Item(Entity):
NEWS = 1
FAQ = 2
kind = Field(SmallInteger, required=True) #kind has values NEWS or FAQ
#other fields
Now, I need to create two subclasses, NewsItem and FAQItem, based on the existing class. So I added a using_options line:
class Item(Entity):
using_options(inheritance='single', polymorphic='kind')
NEWS = 1
FAQ = 2
kind = Field(SmallInteger, required=True) #kind has values NEWS or FAQ
#other fields
of course now, if I try to declare
class NewsItem(Item):
using_options(identity=Item.NEWS)
then no matter what I do, I get the add_column error because the 'kind' column already exists. If I implement Tvrtko's suggestion, then everything works as expected.
Should I raise a ticket? I found no tickets referencing add_column in the Trac.
Regards,
Vinay Sajip