Documented behavior of get_or_create when multiple objects are returned.

Thanks Matt Lauber for the patch.
This commit is contained in:
Tim Graham 2012-11-22 10:36:18 -05:00
parent 9e11253497
commit 71a3162a70
1 changed files with 6 additions and 4 deletions

View File

@ -1321,10 +1321,12 @@ The above example can be rewritten using ``get_or_create()`` like so::
Any keyword arguments passed to ``get_or_create()`` — *except* an optional one Any keyword arguments passed to ``get_or_create()`` — *except* an optional one
called ``defaults`` — will be used in a :meth:`get()` call. If an object is called ``defaults`` — will be used in a :meth:`get()` call. If an object is
found, ``get_or_create()`` returns a tuple of that object and ``False``. If an found, ``get_or_create()`` returns a tuple of that object and ``False``. If
object is *not* found, ``get_or_create()`` will instantiate and save a new multiple objects are found, ``get_or_create`` raises
object, returning a tuple of the new object and ``True``. The new object will :exc:`~django.core.exceptions.MultipleObjectsReturned`. If an object is *not*
be created roughly according to this algorithm:: found, ``get_or_create()`` will instantiate and save a new object, returning a
tuple of the new object and ``True``. The new object will be created roughly
according to this algorithm::
defaults = kwargs.pop('defaults', {}) defaults = kwargs.pop('defaults', {})
params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])