1
0
mirror of https://github.com/django/django.git synced 2025-04-25 17:54:37 +00:00

Document db_default behavior in BooleanField

This commit is contained in:
jcagado 2024-08-06 20:02:43 -07:00
parent b6ad8b687a
commit e4ab2cef99

View File

@ -690,15 +690,38 @@ case it can't be included in a :class:`~django.forms.ModelForm`.
``BooleanField``
----------------
.. class:: BooleanField(**options)
class BooleanField(**options)
A true/false field.
The default form widget for this field is :class:`~django.forms.CheckboxInput`,
or :class:`~django.forms.NullBooleanSelect` if :attr:`null=True <Field.null>`.
The default form widget for this field is CheckboxInput, or NullBooleanSelect if null=True.
The default value of ``BooleanField`` is ``None`` when :attr:`Field.default`
isn't defined.
The default value of BooleanField is None when Field.default isnt defined.
.. note::
When using the `db_default` attribute, the field value will be an instance of `DatabaseDefault` before the instance is saved to the database. This means that a `bool()` evaluation of the field will not reflect the specified `db_default` value until the instance is saved.
For example:
.. code-block:: python
from django.db import models
class MyModel(models.Model):
my_field = models.BooleanField(db_default=False)
my_obj = MyModel()
print(bool(my_obj.my_field)) # True, which is unexpected.
my_obj.save()
print(bool(my_obj.my_field)) # False, as expected.
To ensure the field value reflects the desired default before saving, also set the `default` attribute:
.. code-block:: python
class MyModel(models.Model):
my_field = models.BooleanField(default=False, db_default=False)
``CharField``
-------------