On Dec 9, 1:57 pm, schinckel <m...@schinckel.net> wrote: > On Dec 8, 2:02 pm, nasp <charett...@gmail.com> wrote: > > > You might consider > > readinghttp://docs.djangoproject.com/en/dev/ref/models/fields/#null. > > Thanks: that was the link I needed. > > However, I do take exception with the comment: > > If a string-based field has null=True, that means it has two > possible values for “no data”: NULL, and the empty string. > > An empty string means something different in the context of a > relational database than a NULL value (as -RAX- and Andrew hint at > below). It goes a bit deeper than just unique constraints (although I > have hit this several times), but also impacts upon relational > algebra. (NULL and TRUE => NULL, for instance). Even just as a string, > an empty string is different to NULL. An empty string means "I know > what the value is, and it is a string of no length", compared to one > use of a NULL, as "I don't know what the value is (yet)." > > In addition, NULL behaves vastly differently to an empty string when > using COALESCE() or BOOL(). > > SELECT COALESCE(NULL, '', 'FOO'); => '' > SELECT BOOL(''); => ERROR > > Now, if you stay in django-land, this is probably not going to bite > you too much (unless you want an optional IPAddress field in a > Postgres db), but if you sometimes have to hand-tune queries (or > *gasp* create stored procedures in your database), then you lose the > ability to use COALESCE, for instance.
Having said all of that, I've just implemented a solution (using pre_save), but there is an issue: it is not possible to know from the admin interface returned value if the user meant to have a None value, or an empty string. Matt. -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.