Browse files

Fixed #8802 -- Documented MySQL's usage of 1/0 instead of True/False …

…for model


git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent fd78e89 commit fd1d986bb115db44ddd242ca1f7f73c604b60b18 @malcolmt malcolmt committed Sep 3, 2008
Showing with 23 additions and 0 deletions.
  1. +10 −0 docs/ref/databases.txt
  2. +13 −0 docs/ref/models/fields.txt
@@ -228,6 +228,16 @@ storage engine, you have a couple of options.
.. _AlterModelOnSyncDB:
+Boolean fields in Django
+Since MySQL doesn't have a direct ``BOOLEAN`` column type, Django uses a
+``TINYINT`` column with values of ``1`` and ``0`` to store values for the
+:class:`~django.db.models.BooleanField` model field. Refer to the documentation
+of that field for more details, but usually this won't be something that will
+matter unless you're printing out the field values and are expecting to see
+``True`` and ``False.``.
.. _oracle-notes:
@@ -296,6 +296,19 @@ A true/false field.
The admin represents this as a checkbox.
+.. admonition:: MySQL users..
+ A boolean field in MySQL is stored as a ``TINYINT`` column with a value of
+ either 0 or 1 (most databases have a proper ``BOOLEAN`` type instead). So,
+ for MySQL, only, when a ``BooleanField`` is retrieved from the database
+ and stored on a model attribute, it will have the values 1 or 0, rather
+ than ``True`` or ``False``. Normally, this shouldn't be a problem, since
+ Python guarantees that ``1 == True`` and ``0 == False`` are both true.
+ Just be careful if you're writing something like ``obj is True`` when
+ ``obj`` is a value from a boolean attribute on a model. If that model was
+ constructed using the ``mysql`` backend, the "``is``" test will fail.
+ Prefer an equality test (using "``==``") in cases like this.

0 comments on commit fd1d986

Please sign in to comment.