[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