#9269: get_or_create having issues
---------------------------------------------------+------------------------
          Reporter:  [EMAIL PROTECTED]            |         Owner:  nobody      
 
            Status:  closed                        |     Milestone:  post-1.0   
  
         Component:  Database layer (models, ORM)  |       Version:  1.0        
  
        Resolution:  invalid                       |      Keywords:  
get_or_create
             Stage:  Accepted                      |     Has_patch:  0          
  
        Needs_docs:  0                             |   Needs_tests:  0          
  
Needs_better_patch:  0                             |  
---------------------------------------------------+------------------------
Changes (by badri):

 * cc: [EMAIL PROTECTED] (added)
  * status:  new => closed
  * resolution:  => invalid
  * stage:  Unreviewed => Accepted

Comment:

 p, created = Inventory.objects.get_or_create(product = pr, location = lo,
 storage_type = storagetype)
 executes a query which matches more than one object.
 This raises an exception in django/db/models/query.py line 304..
 you will either have to:
   1.make your get_or_create query more specific by giving more parameters.
   2.handle the exception. something like:
   try:
     p, created = Inventory.objects.get_or_create(product = pr, location =
 lo, storage_type = storagetype)
   except Inventory.MultipleObjectsReturned:
     # do something here

 for instance, I have reproduced the same error from one of your models:
 >>> l1 = Location(name='foo1', description='bar')
 >>> l2 = Location(name='foo2', description='bar')
 >>> obj, created = Location.objects.get_or_create(description='bar')
 >>> l1.save()
 >>> l2.save()
 >>> obj, created = Location.objects.get_or_create(description='bar')
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "/usr/local/lib/python2.5/site-
 packages/django/db/models/manager.py", line 96, in get_or_create
     return self.get_query_set().get_or_create(**kwargs)
   File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py",
 line 326, in get_or_create
     return self.get(**kwargs), False
   File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py",
 line 305, in get
     % (self.model._meta.object_name, num, kwargs))
 MultipleObjectsReturned: get() returned more than one Location -- it
 returned 2! Lookup parameters were {'description': 'bar'}

-- 
Ticket URL: <http://code.djangoproject.com/ticket/9269#comment:5>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to