[Grok-dev] Re: ModelTraverse on the application
Philipp von Weitershausen
philipp at weitershausen.de
Thu Aug 16 05:53:50 EDT 2007
Wichert Akkerman wrote:
> I'm working on an application which does not use the ZODB but keeps all
> data in SQL. It seems that the best way to model that in grok is to use
> model classes that map the SQL data and use the standard ModelTraverse
> to go over them.
>
> Unfortunately this does not seem to work for the application. I use
> this simple test:
>
> import grok
> from saturn.status import Status
> # Status is a simple grok.Model derived class
>
> class saturn(grok.Application):
> def __init__(self):
> super(saturn, self).__init__(self)
> self.status = Status()
For the list record, you also need to inherit from either grok.Model,
grok.Container or some other persistent base class.
> class Index(grok.View):
> grok.context(saturn)
>
> For some reason I have to explicitly tell grok what the context for
> Index is. That is no big deal though, but this is: as soon as I visit
> /status in my application I get this traceback:
>
> 2007-08-16T11:04:56 ERROR ZODB.Connection Couldn't load state for 0x03
> Traceback (most recent call last):
> ...
> TypeError: Cache values must be persistent objects.
>
> that is somewhat unexpected to me. Is my pattern wrong here?
Nope. I think it's a good idea to make your SQL objects available
through a custom traverser.
--
http://worldcookery.com -- Professional Zope documentation and training
More information about the Grok-dev
mailing list