Michael Bayer wrote:
> well, i can support this in 0.5 trunk.  in rev 4965, If a descriptor  
> is present on a class, or if the name is excluded via the include/ 
> exclude lists, the attribute will not be instrumented via the  
> inherited mapper or via the mapped Table.  So your example works with  
> just the @property alone.

I've managed to demonstrate the issue in an isolated test (see below). 
The only change from the previous is that I've set a default value.

This causes SQLAlchemy to *prefetch* the 'col' column, but this throws 
an exception since the column is not mapped.

from sqlalchemy import *
from sqlalchemy.orm import *

e = create_engine('sqlite://')
m = MetaData(e)

t1= Table(
      't1', m,
      Column('id', Integer, primary_key=True),
      Column('col', String(50), default=u""),
      )
t1.create()

t2= Table(
      't2', m,
      Column('id', Integer, ForeignKey("t1.id"), primary_key=True),
      Column('data', String(50)),
      )
t2.create()

class T1(object):
      pass

class T2(T1):
      @property
      def col(self):
          return u"Some read-only value."

polymorphic = (
      [T2], t1.join(t2))

mapper(T1, t1)
mapper(
      T2, t2,
      exclude_properties=('col',),
      with_polymorphic=polymorphic,
      inherits=T1,
      inherit_condition=(t1.c.id==t2.c.id),
      )

sess = sessionmaker()()
x = T2()

assert type(T2.col) is property

x.data = "some data"
sess.save(x)
sess.commit()
sess.clear()

assert sess.query(T2).one().data == "some data"
assert sess.query(T2).one().col == u"Some read-only value."

x = sess.query(T2).one()
x.data = "some new data"
sess.commit()
assert sess.query(T2).one().data == "some new data"


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to