Skip to content

Commit

Permalink
Refs #34099 -- Doc'd that custom Model.save() should update update_fi…
Browse files Browse the repository at this point in the history
…elds kwarg.
  • Loading branch information
sarahboyce authored and felixxm committed Nov 14, 2022
1 parent 67da22f commit 0678d65
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions docs/topics/db/models.txt
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,33 @@ built-in model methods, adding new arguments. If you use ``*args,
**kwargs`` in your method definitions, you are guaranteed that your
code will automatically support those arguments when they are added.

If you wish to update a field value in the :meth:`~Model.save` method, you may
also want to have this field added to the ``update_fields`` keyword argument.
This will ensure the field is saved when ``update_fields`` is specified. For
example::

from django.db import models
from django.utils.text import slugify

class Blog(models.Model):
name = models.CharField(max_length=100)
slug = models.TextField()

def save(
self, force_insert=False, force_update=False, using=None, update_fields=None
):
self.slug = slugify(self.name)
if update_fields is not None and "name" in update_fields:
update_fields = {"slug"}.union(update_fields)
super().save(
force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields,
)

See :ref:`ref-models-update-fields` for more details.

.. admonition:: Overridden model methods are not called on bulk operations

Note that the :meth:`~Model.delete()` method for an object is not
Expand Down

0 comments on commit 0678d65

Please sign in to comment.