From 71a3162a70a282f150f76e8f0fc5865aa7a338a4 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Thu, 22 Nov 2012 10:36:18 -0500 Subject: [PATCH] Documented behavior of get_or_create when multiple objects are returned. Thanks Matt Lauber for the patch. --- docs/ref/models/querysets.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt index abf32c9621..40fa2d2b2f 100644 --- a/docs/ref/models/querysets.txt +++ b/docs/ref/models/querysets.txt @@ -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 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 -object is *not* 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:: +found, ``get_or_create()`` returns a tuple of that object and ``False``. If +multiple objects are found, ``get_or_create`` raises +:exc:`~django.core.exceptions.MultipleObjectsReturned`. If an object is *not* +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', {}) params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])