Browse Source

Fixed #28514 -- Clarifed docs about idempotence of RelatedManager.add().

Jezeniel Zapanta 7 years ago
parent
commit
abe6c5defe
3 changed files with 9 additions and 4 deletions
  1. 1 0
      AUTHORS
  2. 7 3
      docs/ref/models/relations.txt
  3. 1 1
      docs/topics/db/examples/many_to_many.txt

+ 1 - 0
AUTHORS

@@ -385,6 +385,7 @@ answer newbie questions, and generally made Django that much better:
     Jeremy Dunck <jdunck@gmail.com>
     Jeremy Lainé <jeremy.laine@m4x.org>
     Jesse Young <adunar@gmail.com>
+    Jezeniel Zapanta <jezeniel.zapanta@gmail.com>
     jhenry <jhenry@theonion.com>
     Jim Dalton <jim.dalton@gmail.com>
     Jimmy Song <jaejoon@gmail.com>

+ 7 - 3
docs/ref/models/relations.txt

@@ -56,11 +56,15 @@ Related objects reference
         manager perform the update by calling ``e.save()``.
 
         Using ``add()`` with a many-to-many relationship, however, will not
-        call any ``save()`` methods, but rather create the relationships
-        using :meth:`QuerySet.bulk_create()
+        call any ``save()`` methods (the ``bulk`` argument doesn't exist), but
+        rather create the relationships using :meth:`QuerySet.bulk_create()
         <django.db.models.query.QuerySet.bulk_create>`. If you need to execute
         some custom logic when a relationship is created, listen to the
-        :data:`~django.db.models.signals.m2m_changed` signal.
+        :data:`~django.db.models.signals.m2m_changed` signal, which will
+        trigger ``pre_add`` and ``post_add`` actions.
+
+        Using ``add()`` on a relation that already exists won't duplicate the
+        relation, but it will still trigger signals.
 
     .. method:: create(**kwargs)
 

+ 1 - 1
docs/topics/db/examples/many_to_many.txt

@@ -75,7 +75,7 @@ Create another ``Article``, and set it to appear in both ``Publications``::
     >>> a2.publications.add(p1, p2)
     >>> a2.publications.add(p3)
 
-Adding a second time is OK::
+Adding a second time is OK, it will not duplicate the relation::
 
     >>> a2.publications.add(p3)