mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #6641 -- If we lose a race when creating a new object in get_or_create,
re-get the result from the database and return that. Thanks, Jeff Guinness and Timothée Peignier. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7289 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.db import connection, transaction | from django.db import connection, transaction, IntegrityError | ||||||
| from django.db.models.fields import DateField, FieldDoesNotExist | from django.db.models.fields import DateField, FieldDoesNotExist | ||||||
| from django.db.models import signals, loading | from django.db.models import signals, loading | ||||||
| from django.dispatch import dispatcher | from django.dispatch import dispatcher | ||||||
| @@ -285,11 +285,14 @@ class _QuerySet(object): | |||||||
|         try: |         try: | ||||||
|             return self.get(**kwargs), False |             return self.get(**kwargs), False | ||||||
|         except self.model.DoesNotExist: |         except self.model.DoesNotExist: | ||||||
|             params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) |             try: | ||||||
|             params.update(defaults) |                 params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) | ||||||
|             obj = self.model(**params) |                 params.update(defaults) | ||||||
|             obj.save() |                 obj = self.model(**params) | ||||||
|             return obj, True |                 obj.save() | ||||||
|  |                 return obj, True | ||||||
|  |             except IntegrityError, e: | ||||||
|  |                 return self.get(**kwargs), False | ||||||
|  |  | ||||||
|     def latest(self, field_name=None): |     def latest(self, field_name=None): | ||||||
|         """ |         """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user