[Zope-DB] Testing for empty result set

Chris Withers chris at simplistix.co.uk
Sat Mar 26 05:40:46 EST 2005

Dieter Maurer wrote:

> Charlie Clark wrote at 2005-3-24 13:44 +0100:
>>your right tal:condition is what you should be using. However, as 
>>Results-Objects with empty records are not None you still need a little 
>>Python test to get things to work correctly.
>><div tal:condition="python: len(context.myZSQL())">
> While an empty result set is not "None", it behaves as a
> Python "false" value.
> Therefore, you can (and should) use
> 	   tal:condition="context/myZSQL"

However, both of these may lead an inxpereinced person to call their 
ZSQL method twice for each page rendering.

I'd suggest doing something like:

<table tal:define="results context/myZSQL">
   <tr tal:condition="not:results>
     <td colspan="3">
        No results were found.
   <tr tal:repeat="result results">
     <td tal:contents="result/x"/>
     <td tal:contents="result/y"/>
     <td tal:contents="result/z"/>



Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk

More information about the Zope-DB mailing list