I don't think so.. because I was using .get() first, and found that it throws an exception if the query returns no results. Isn't that true? I prefer my exceptions to be, exceptional :)
Phill On Mar 30, 3:07 pm, Dougal Matthews <douga...@gmail.com> wrote: > I think you are looking for get() > > facilityList = Facility.objects.get(name = facilityName) > > http://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups > > Dougal > > --- > Dougal Matthews - @d0ugalhttp://www.dougalmatthews.com/ > > 2009/3/30 famousactress <famousactr...@gmail.com>: > > > > > Hello folks. I'm new to python, new to Django, but very old to ORMs > > (via Java's Hibernate, mostly)... > > > I naively assumed that QuerySet.filter() would return me None, if > > there were no results. Instead it returns an empty list. That's not > > terrible, but for some things, it can make code more cumbersome. > > Consider the following: > > > def ensureFacilityExists(facilityName): > > > facilityList = Facility.objects.filter(name = facilityName) > > > if len(facilityList) == 1: > > return facilityList[0] > > elif len(facilityList == 0: > > facility = Facility(name = facilityName) > > facility.save() > > return facility > > else: > > raise Exception("More than one facility with that name!") > > > This is a bit clunky for this case. I looked for a method on QuerySet > > that would clean this up, but didn't find one. I may have missed > > something. Here's what I did to clean my case up though: > > > def ensureFacilityExists(facilityName): > > > facility = Facility.objects.filter(name = facilityName).only() > > > if facility == None: > > facility = Facility(name = facilityName) > > facility.save() > > > return facility > > > ... In order to do this, I added the only() method to QuerySet: > > > def queryset_only(self): > > i = len(self) > > if i == 0: > > return None > > elif i > 1: > > raise Exception("More than one element in this querySet!!") > > else: > > return self[0] > > > import new > > from django.db.models.query import QuerySet > > QuerySet.only = new.instancemethod(queryset_only,None,QuerySet) > > > My question is: > > > Is there another facility for doing this already built into Django's > > ORM? If not, is this a change that seems valuable to anyone else? > > > Thanks, > > Phill --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---