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 ) > _______________________________________________ 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 )