Hi Martin
Betreff: Re: [Zope-dev] z3c.form - extraction from sequence widget
Hi Roger,
Btw., it is possible to have a three-state widget for booleans, such as a drop-down widget, that includes "True/False/None", although it may not make much sense.
No that's not possible! Because you can't save anything then False or True in a Bool field.
I was a little bit unclear. I meant that the widget can't save back None as a new value after True/False was set.
Really? How is this different to having a not-required Int, Float, TextLine or whatever field, with no default? Do they then semantically default to 0, 0.0, "" etc, or are they expected to be None? My assumption is that they're None when not explicitly set.
Yes, you are right the default is set to None like any other field which doesn't define something else. The problem is, if you use a widget and the widget uses None as an option e.g. True/False/None for act as (True, False and not set) then the field validation whould not allow to set anything then True or False as a value. The initial value could be None, but after set to True or False this initial (None) state can't get set again. That's sometimes useful but sometime not.
I think it's always bad idea to use default=None for Bool fields. Because of it's invalid defaults.
I guess that depends on whether you think "not set" means "invalid". In SQL, for example, any field type can accept NULL (unless the column is defined NOT NULL).
I see your point, None is often use as an indicator for a not set value. I'm not so sure if this is a good concept for any use case. I use that concept too im my projects for Bool fields. But I also use some Choice fields with explicit (True/False/None) values for allow to reset a already set value. What I tried to say is: None is a possible inital value but this value is invalid for Bool fields. If the goal is to indicate a *not set value* then we are fine. If you set the field to require=True and that's fundamental part of your business logic, then it could end in a nightmare because of the invalid default. At least if the application will access the field value before someone changed that to a valid value. Regards Roger Ineichen
Martin -- Author of `Professional Plone Development`, a book for developers who want to work with Plone. See http://martinaspeli.net/plone-book
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )