diff options
| author | Tim Graham <timograham@gmail.com> | 2016-10-13 11:02:02 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-13 11:02:02 -0400 |
| commit | 51b83d9e5113ea5b81d04f4d117bd5acd3c1b822 (patch) | |
| tree | 5361c5b47a45e2155da4b35e15c02228f3f62a04 /docs | |
| parent | 2027d6acf79d6d1d18c804d942d63338fb6b8504 (diff) | |
Fixed #27342 -- Corrected QuerySet.update_or_create() example.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ref/models/querysets.txt | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt index 23c0c987f2..05d6180b14 100644 --- a/docs/ref/models/querysets.txt +++ b/docs/ref/models/querysets.txt @@ -1839,21 +1839,25 @@ the given ``kwargs``. If a match is found, it updates the fields passed in the This is meant as a shortcut to boilerplatish code. For example:: + defaults = {'first_name': 'Bob'} try: obj = Person.objects.get(first_name='John', last_name='Lennon') - for key, value in updated_values.iteritems(): + for key, value in defaults.items(): setattr(obj, key, value) obj.save() except Person.DoesNotExist: - updated_values.update({'first_name': 'John', 'last_name': 'Lennon'}) - obj = Person(**updated_values) + new_values = {'first_name': 'John', 'last_name': 'Lennon'} + new_values.update(defaults) + obj = Person(**new_values) obj.save() This pattern gets quite unwieldy as the number of fields in a model goes up. The above example can be rewritten using ``update_or_create()`` like so:: obj, created = Person.objects.update_or_create( - first_name='John', last_name='Lennon', defaults=updated_values) + first_name='John', last_name='Lennon', + defaults={'first_name': 'Bob'}, + ) For detailed description how names passed in ``kwargs`` are resolved see :meth:`get_or_create`. |
