[Zope] Re: Output only the first or a particular record using TAL

Tino Wildenhain tino at wildenhain.de
Wed Sep 28 02:49:51 EDT 2005


Am Mittwoch, den 28.09.2005, 16:32 +1000 schrieb Julian Yap:
> --- Chris Withers <chris at simplistix.co.uk> wrote:
...
> > Now, if you really can't stop your sql returning more than one
> > row 
> > (LIMIT 1 anyone?) then how about:
> > 
> > <tr tal:define="customers container/getCustomerLicences;
> >                  customer  python:customers and customers[0]"
> >      tal:condition="customer">
> >   <td>
> >    Customer:
> >    <span tal:content="customer/full_name"></span>
> >   </td>
> > </tr>
> 
> To have my SQL returning only just 1 row would require another Z
> SQL Method, in which case it may as well be something like
> getCustomer.
> 
> I'm still getting my head around TAL and how it works so I'm not
> sure how the "python:customers and customers[0]" code works.
> 
> Ideally, I want to use just the one Z SQL method (done) but I
> guess it would be better coding to just reference the Z SQL
> method once.  Currently the page template makes two calls to the
> Z SQL method.  Once for the customer header and another to
> retrieve the customer license details.  Can you suggest how this
> would be done?

You could just wrap it in a simple python script:

results=context.yourZSQLMethod()

h=results[:1] # see python slice
b=results[1:]

return context.yourPageTemplate(header=h,body=b)


And in your ZPT use tal:repeat="chead options/header"
and options/body

But maybe you can rething and rephrase your problem :-)



More information about the Zope mailing list