From f80dbcf7dccc7227eade1a02d413fc65fc6f53ef Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Wed, 19 Apr 2023 23:54:18 +0700 Subject: [PATCH] [4.2.x] Fixed #34435 -- Doc'd that JSONField.default must be a callable. Backport of 01ae9d4ca9afdaf30a247e10e8333261a7d8224c from main --- docs/ref/models/fields.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index c1267507b2..7374ea6b63 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -1262,14 +1262,16 @@ Python native format: dictionaries, lists, strings, numbers, booleans and Defaults to ``json.JSONDecoder``. -If you give the field a :attr:`~django.db.models.Field.default`, ensure it's an -immutable object, such as a ``str``, or a callable object that returns a fresh -mutable object each time, such as ``dict`` or a function. Providing a mutable -default object like ``default={}`` or ``default=[]`` shares the one object -between all model instances. - To query ``JSONField`` in the database, see :ref:`querying-jsonfield`. +.. admonition:: Default value + + If you give the field a :attr:`~django.db.models.Field.default`, ensure + it's a callable such as the :py:class:`dict` class or a function that + returns a fresh object each time. Incorrectly using a mutable object like + ``default={}`` or ``default=[]`` creates a mutable default that is shared + between all instances. + .. admonition:: Indexing :class:`~django.db.models.Index` and :attr:`.Field.db_index` both create a