Sorry for too much back and forth conversation which distract you from the original proposal. My point is not about default value, it is about suggesting to add a blank for OptionsWidget. You can simply try the patch in my first post (quoted below) and see the effect.
Fran also has some good points. Please also take that into consideration. On Sep5, 8:34pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > You can already set a default Field(...,requires=IS_IN_SET > (...),default='value') > > On Sep 5, 5:44 am, Iceberg <iceb...@21cn.com> wrote: > > > > > On Sep5, 5:25pm, Fran <francisb...@googlemail.com> wrote: > > > > On Sep 5, 5:58 am, Iceberg <iceb...@21cn.com> wrote: > > > > > So my proposal is to adjust OptionsWidget to always show up with an > > > > initial blank (when creating record), but not necessarily accepting > > > > it. Just change line 198 of sqlhtml.py from: > > > > opts = [] > > > > to: > > > > if value: > > > > opts = [] > > > > else: # To enforce an explicit choice when creating new record > > > > opts = [OPTION(_value='')] > > > > Nice idea, however, sometimes we do want the 1st option to be a > > > default (since it's by far the most common option) & not make people > > > select every time they're entering data....so this behaviour should be > > > optional. > > > Also, in order not to break backward-compatibility, this optional flag > > > should default to off. > > > > F > > > Thanks for the comments anyway. I would like to give a scenario why > > better make people select every time they're entering data. In a > > bookshop selling Bible of different language, the clerk inputs book > > orders all day long. 99% customers buy English edition of Bible, yet > > some customers order Chinese edition or Italian edition etc. If our > > order system has "English" as default value in the language field, my > > one year observation told me the clerk would hardly remember to change > > language field because he used to ignore that field at all for > > previous 99 times. Think about Murphy's law: "Anything that can > > possibly go wrong, does." It is a valuable lesson. > > > On the other hand, my proposal does not prevent you from explicitly > > using default value at all. If you insist, you can still define > > default value as always: > > Field('language', > > requires=IS_IN_SET(['English','Chinese','Italian']), > > default='Italian') # the default value need not even be the first > > one > > And you know what? In my patch, the initial blank will be > > automatically hidden if you defines a default value. See the "if > > value" clause of my patch. > > > After all, my proposal does not introduce any new syntax. Old apps can > > benefit from it, and can easily bypass it if insist. What more can you > > expect for? :-) > > > Sincerely, > > Iceberg --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---