Fixed #24690 -- Added a warning about mutable defaults for ArrayField/JSONField.

This commit is contained in:
Tim Graham 2015-07-31 12:16:45 -04:00
parent fd81588bc6
commit f93e7f5674
1 changed files with 12 additions and 0 deletions

View File

@ -17,6 +17,12 @@ ArrayField
<ArrayField.size>`. ``ArrayField`` can be nested to store multi-dimensional
arrays.
If you give the field a :attr:`~django.db.models.Field.default`, ensure
it's a callable such as ``list`` (for an empty default) or a callable that
returns a list (such as a function). Incorrectly using ``default=[]``
creates a mutable default that is shared between all instances of
``ArrayField``.
.. attribute:: base_field
This is a required argument.
@ -461,6 +467,12 @@ JSONField
its Python native format: dictionaries, lists, strings, numbers, booleans
and ``None``.
If you give the field a :attr:`~django.db.models.Field.default`, ensure
it's a callable such as ``dict`` (for an empty default) or a callable that
returns a dict (such as a function). Incorrectly using ``default={}``
creates a mutable default that is shared between all instances of
``JSONField``.
.. note::
PostgreSQL has two native JSON based data types: ``json`` and ``jsonb``.