Commit fd1d986b authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

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

BooleanFields.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8910 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent fd78e89d
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -228,6 +228,16 @@ storage engine, you have a couple of options.

.. _AlterModelOnSyncDB: http://code.djangoproject.com/wiki/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:

+13 −0
Original line number Diff line number Diff line
@@ -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.

``CharField``
-------------