On Dec 8, 2:02 pm, nasp <[email protected]> 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.
--
You received this message because you are subscribed to the Google Groups
"Django developers" 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-developers?hl=en.