django - convert a list back to a queryset

Jiaaro picture Jiaaro · Jun 29, 2009 · Viewed 60.7k times · Source

I have a handful of records that I would like to sort based on a computed value. Got the answer over here... like so:

sorted(Profile.objects.all(), key=lambda p: p.reputation)

on a Profile class like this:

class Profile(models.Model):

    ...

    @property
    def reputation(self):
        ...

Unfortunately the generic view is expecting a queryset object and throws an error if I give it a list.

Is there a way to do this that returns a queryset

or...

Can I convert a list to a queryset somehow? Couldn't find anything like that in the django docs.

I am hoping not to denormalize the data, but I guess I will if I have to.

Update / Answer:

it seems that the only way to get a queryset back is if you can get all of your logic into the sql queries.

When that is not possible, (I think) you need to denormalize the data

Answer

neolaser picture neolaser · Jan 25, 2011

Ok...this post is now old BUT what you could do is get all the ids of the objects in your list, then perform a model.objects.filter(pk__in=list_of_ids)