On Wed, Jul 21, 2010 at 12:04 PM, Darius Damalakas < darius.damala...@gmail.com> wrote:
> Hi, > > I want to select a single object or get None if my query does not > return a single object. > > > So far here is what i have found in the docs (http:// > docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets): > > ------------------------------------ > To retrieve a single object rather than a list (e.g. SELECT foo FROM > bar LIMIT 1), use a simple index instead of a slice. For example, > this returns the first Entry in the database, after ordering entries > alphabetically by headline: > > >>> Entry.objects.order_by('headline')[0] > > This is roughly equivalent to: > > >>> Entry.objects.order_by('headline')[0:1].get() > > Note, however, that the first of these will raise IndexError while the > second will raise DoesNotExist if no objects match the given criteria. > See get() for more details. > ------------------------------------ > > Unfortunately, both ways generate an exception, which is bad. > > Is there some kind of way to either get a single object and evaluate > the query, or get None instead? > NHibernate and LINQ has a way to do that, so i wonder does Django have > that > > > Darius try: obj = Entry.objects.order_by('headline')[0:1].get() except Entry.DoesNotExist: obj = None This is pretty standard. There has been some discussion on a get_or_none style function on querysets, but I think we will have to wait a version for it. Also look up django.shortcuts.get_object_or_404 Hope that helps, Michael -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.