On 09/02/2010 17:55, Michael Bayer wrote:
On Sep 2, 2010, at 8:59 AM, Julien Cigar wrote:

Hello,

Another quick question on .with_polymorhpic() .. :)

When I use inheritance I always subclass a Query object per mapped (child) 
class, for example :

class QueryRoot(orm.Query):

  def available_to_all_children(self):
    return self.filter(...)

class RootModel(object):

  query = Session.query_property(QueryRoot)


class QueryChild(QueryRoot):

  def a_child_filter(self):
    return self.filter(...)

class ChildModel(RootModel):

  query = Session.query_property(QueryChild)


then the mappers:

mapper(Root, table_root,
       polymorphic_on=table_root.c.type_id
)

mapper(Child, table_child,
       inherits=Root,
       polymorphic_identity='child'
)

it works well, and the ability of sub classing a Query class is very elegant!

The only "problem" is that when I use something like :
Root.query.with_polymorphic([Child]) I would like to be able to use QueryChild 
filters (so be able to do something like 
Root.query.with_polymorphic([Child]).a_child_filter()). Sounds logical because 
Child columns will always be present in the result set (because of the LEFT 
OUTER JOIN)

How would you do that properly?
RootQuery is already a subclass, override with_polymorphic to look at the args 
and produce the kind of Query class you want.


I'll do that :-)

Wouldn't it be interesting to add an option to .with_polymorphic()?
ummm this is all pretty Julien-specific stuff so far ... :)



hehe .. I hope I'm not thinking/doing something wrong :p

Thanks,
Julien


--
No trees were killed in the creation of this message.
However, many electrons were terribly inconvenienced.

--
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.

<jcigar.vcf>

--
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.

<<attachment: jcigar.vcf>>

Reply via email to