#3458: Blankable, non-nullable CharFields have a strange default behavior
---------------------------+------------------------------------------------
Reporter:  [EMAIL PROTECTED]  |       Owner:  adrian    
  Status:  new             |   Component:  Validators
 Version:  0.95            |    Keywords:            
   Stage:  Unreviewed      |   Has_patch:  0         
---------------------------+------------------------------------------------
 If you create a create a CharField in a model like so:
 
 {{{
 some_field = models.CharField(blank=True, null=False)
 }}}
 
 then create the database via syncdb, the model/validation layer considers
 None to be a valid value even though it just created the database table
 with NOT NULL as an attribute for the some_field column. This leads to
 some trouble. For starters, if you neglect to include some_field in a
 form, the field will not produce any POST data, but the lack of a value
 won't trigger a model validation error. This is made worse by the fact
 that Fields seem to default their default values to None. Defaulting to
 None will always produce database errors here unless you somehow go behind
 Django's back and modify the database to allow NULL values while keeping
 null for the field equal to False. Thus, an invalid insertion will be sent
 to the database, causing a nasty exception...
 
 Since the preferred method for storing blank values in CharFields is to
 use an empty string, I feel this should really be handled by default
 differently. Some ideas:
 
  * For CharField, blank=True when used together with null=False could
 imply, unless otherwise specified, that the default value is an empty
 string (The documentation already says that empty strings are the
 preferred method of storing blank values in a CharField, so why is it
 defaulting to a bad value?)
  * When null=True for a field, Field.validate could raise an exception and
 warn when asked to validate None, since it is not, after all, a valid
 value for a field where NULL is not allowed.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/3458>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to