Solution for 'in requires character as left operand' error
[SECOND ATTEMPT] (It took me a while to figure this out, so I submit it to the list for future Googlers. This was experienced on Zope 2.6.) If you are getting an error in Zope that looks like this: 'in ' requires character as left operand ...then perhaps your problem is like mine. The error occurred after I would add an object (using a Zope Product 'addForm') in which I would select only one single choice from a 'multiple field'. If I later tried to access the object's properties via its Properties view method 'propertysheets/myProps/manage', I would get the above error. (In my case, the multiple field appeared on my home-made addForm as a number of check boxes. Each checkbox represented an item from those in a multiple selection property created for my Product's Zclass.) When only a single item was selected in the multiple field, it was converted into a Python STRING, e.g. 'Music' when what I really wanted was a "singleton" Python LIST, e.g. ['Music'] Figuring this out was the hard part. Fixing it was easy: Zope provides a simple 'argument conversion' facility. Adding ':list' to the addForm HTML form ensures that the multiple field value(s) will always be treated as a Python list, even if the multiple field only had a single value. To illustrate the fix (similar to the one I made in my 'addForm' HTML), assume the line with the problem property was: <input type="checkbox" name="choices" value="choice_one" /> Change it to the following, which - via ':list' - ensures the Zope argument conversion of 'choices' so that it is always a list: <input type="checkbox" name="choices:list" value="choice_one" /> For more information on such Zope argument conversion, see: http://www.zope.org/Documentation/Books/ZDG/current/ObjectPublishing.stx/ Good luck! Jon Whitener Detroit, Michigan USA
participants (1)
-
Jon Whitener