Hi,

If you definitely want a get_or_none style method, django-annoying has:

# get_object_or_None function - similar to get_object_or_404, but returns None if object not found.

http://bitbucket.org/offline/django-annoying/wiki/Home

Hope this helps,
-- Casey


On 07/22/2010 09:50 AM, Darius Damalakas wrote:
Hi,

This is exactly what i do not want - to manually catch exceptions.
get_or_none function is what i need, but sad it's not here yet.

I hope when i will get to know python better, i will learn how to add
methods to all instances of some class, then i could add this method
myself. I know with javascript prototyping inheritance that is easily
possible. Not sure about python though

Thanks for the answer. That is sufficient





On 21 July, 19:23, Michael<newmani...@gmail.com>  wrote:
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.

Reply via email to