In the following code, I am using django templates to render data from a SQLAlchemy-mapped database. I subclass django.template.Context, so that I can pass it a unique ID, from which it determines what to pull from the DB. But when it comes time to render the template (that is: when I actually try to access data in the database), I get an UnboundExecutionError. If I instantiate the Context object directly, I don't have any problems. Any idea why this would be, and how I can get my class to work? I'd rather keep the lazy loading semantics intact, if possible.
In the code below, render_1() has no problem, while render_2() raises the error. Below the code, I show the output I'm getting. #### CODE #### from django.conf import settings settings.configure() from django.template import Template, Context from sqlalchemy.orm.session import Session from cdla.orm import docsouth, docsouth_sohp class SohpContext(Context): def __init__(self, sohp_id): s = Session() q = s.query(docsouth_sohp.Interview) context_dict = {'interview': q.filter_by(sohp_id=sohp_id).one()} super(SohpContext, self).__init__(context_dict) def render_1(sohp_id): print "render_1" template = Template(''' {% for p in interview.participants %}\ * {{ p.participant.participant_firstname }} {% endfor %}''') s = Session() c = Context({'interview': s.query(docsouth_sohp.Interview).filter_by(sohp_id=sohp_id).one()}) print template.render(c) def render_2(sohp_id): print "render_2" template = Template(''' {% for p in interview.participants %}\ * {{ p.participant.participant_firstname }} {% endfor %}''') c = SohpContext(sohp_id) print template.render(c) if __name__ == '__main__': render_1('A-0001') render_2('A-0001') #### END CODE #### #### RESULTS #### $ python error_reduce.py /net/docsouth/dev/lib/python/sqlalchemy/logging.py:62: FutureWarning: hex()/oct() of negative int will return a signed string in Python 2.4 and up return "%s.%s.0x..%s" % (instance.__class__.__module__, render_1 * Richard * Richard * Jack * Jack render_2 Traceback (most recent call last): File "error_reduce.py", line 37, in ? render_2('A-0001') File "error_reduce.py", line 33, in render_2 print template.render(c) File "/usr/lib/python2.3/site-packages/django/template/__init__.py", line 168, in render return self.nodelist.render(context) File "/usr/lib/python2.3/site-packages/django/template/__init__.py", line 705, in render bits.append(self.render_node(node, context)) File "/usr/lib/python2.3/site-packages/django/template/__init__.py", line 718, in render_node return(node.render(context)) File "/usr/lib/python2.3/site-packages/django/template/defaulttags.py", line 93, in render values = self.sequence.resolve(context, True) File "/usr/lib/python2.3/site-packages/django/template/__init__.py", line 563, in resolve obj = resolve_variable(self.var, context) File "/usr/lib/python2.3/site-packages/django/template/__init__.py", line 650, in resolve_variable current = getattr(current, bits[0]) File "/net/docsouth/dev/lib/python/sqlalchemy/orm/attributes.py", line 44, in __get__ return self.impl.get(instance._state) File "/net/docsouth/dev/lib/python/sqlalchemy/orm/attributes.py", line 279, in get value = callable_() File "/net/docsouth/dev/lib/python/sqlalchemy/orm/strategies.py", line 432, in __call__ raise exceptions.UnboundExecutionError("Parent instance %s is not bound to a Session, and no contextual session is established; lazy load operation of attribute '%s' cannot proceed" % (instance.__class__, self.key)) sqlalchemy.exceptions.UnboundExecutionError: Parent instance <class 'cdla.orm.docsouth_sohp.Interview'> is not bound to a Session, and no contextual session is established; lazy load operation of attribute 'participants' cannot proceed $ #### END RESULTS #### --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---