> I need ordering units in random order, but keep the order for browsing
> per pages and also keep the order for changeable filtering options,
> like startswith and contains. What are the best solutions? There is
> huge amount of units and I read the order by RANDOM() or especialy
> MySQL RAND() is very slow. Have you any experience/solutions?
My first thought would be to bring back the results in a
predictable order that can't be changed. That will ensure that
they don't change over time. You can then use the "random"
module's seed/shuffle calls to shuffle the given instance. You
merely have to set the seed in your session information:
import random
...
data = list(MyObject.objects.filter(...).order('predictable'))
seed = request.GET.get('seed', random.randint(0, 10000))
r = random.Random()
r.seed(seed)
r.shuffle(data)
do_stuff(data, seed) # pass the seed to the template
# paginator so it can be passed in on the next page
This works because if you take data in a known-order sequence,
set the random-generator's seed, and then shuffle the data based
on that sed, you should get the same pseudo-random order each
time you use the same seed. So the trick is to choose a random
seed once per "browsing".
-tim
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" 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-users?hl=en
-~----------~----~----~----~------~----~------~--~---