Hey,

thanx for the reply! No, the bid is *not* ordered randomly, but you
know what, your solution works anyway! ;) Test this and you'll notice
that it works.. (still haven't figured out why!):

 * bs = BID.objects.all ()
 * idx=81; bid=bs[idx];
 * bs.order_by ('?').filter (pk__lt=bid.id).count () ## == idx

Can u explain this? I've checked even for *every* bid in bs if this
condition holds for my sample, and it was true. My test routine was:

 * for idx, bid in enumerate(bs):
 *     idx, bs.order_by ('?').filter (pk__lt=bid.id).count () - idx ==
0

.. strange.

On Mar 7, 11:50 am, greatlemer <greatle...@googlemail.com> wrote:
> if bids is ordered by index then you could just return
> BID.objects.filter(...).filter(pk__lte=id).count() and that should be
> what your after in one step (if I've understood the question
> correctly).
>
> --
> G
>
> On Mar 7, 7:10 am, Hasan Karahan <hasan.karaha...@gmail.com> wrote:
>
> > Hi,
>
> > I'm wondering if there is an efficient way to look-up the index of a given
> > object in a query-set? I'm using now the following approach:
>
> > def get_index (id):
>
> > bids = BID.objects.filter (..)
> > obj2idx = dict (zip (bids, xrange (bids.count ()))
>
> > bid = BID.objects.get (id=ID)
>
> > return obj2idx (bid)
>
> > This has a linear time processing.. is there a more efficient way to do it?

-- 
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