2013-06-26 5 views
0

У меня есть следующий код состояния, который теоретически должен работать, но он не выполняет проверку состояния. форма обращается к этому условию, запускает его, а затем возвращает деление на ошибку с делением 0 вместо 0tal: состояние не работает состояние проверка

Im работает с неполными данными с целью, это делается для того, чтобы страницы ошибок не генерировались, ячейка в таблице просто показывает 0.

<td style="text-align: right;"> 
     <span tal:condition="python:result.sum_adt_out<>0"> 
       <span tal:replace="python:'%.1f'%((float(result.sum_cenmn) or 0)/float(result.sum_adt_out))">currentindex</span></span> 

     <span tal:condition="python:result.sum_adt_out==0"> 
       <span tal:replace="python:'%.1f'%(0.0)"></span></span> 
</td> 

Если у кого-то есть какие-либо идеи, они были бы очень признательны.

ответ

0

Если ваш атрибут result.sum_adt_out является строкой , ваш тест не удастся.

Также обратите внимание, что <> устарел на Python, вместо этого используйте !=, чтобы проверить неравенство. Ваш шаблон, упрощен и с вызовом float() на значение первого, чтобы убедиться, что он является числовым, то становится:

<td style="text-align: right;" tal:define="sum_adt_out python:float(result.sum_adt_out)"> 
    <span tal:condition="sum_adt_out" 
      tal:content="python:'%.1f' % (float(result.sum_cenmn)/sum_adt_out,)">currentindex</span> 

    <span tal:condition="not:sum_adt_out">0.0</span> 

</td> 
+0

Это работало отлично. большое большое спасибо! – John