Rachel Willmer wrote: > I have a complicated query which should return the subset of a table > whose objects match one of several conditions. > > What's the easiest way of doing this, given that I can't just do a SQL > statement, because some of the conditions require me to feed the > object's values into a function to evaluate it. > > I've had a few ideas: > > a) Pulling back the entire table, and deleting from the query set > those objects which don't match. > > Is this possible? I get the feeling that using delete() would delete > the entry from the db, which i don't want to do.
You shouldn't actually delete anything from a full list of records. Just filter it in a new list (and then Python promptly discards unneeded records from memory): records = [r for r in Model.objects.all() if r.check_condition()] (this assumes that check_condition returns something sensibly evaluating to True or False) > I can't find any documentation to show how to union 2 querysets - is > it possible? Since you anyway will get them in memory entirely you can just create actual lists from querysets and then concatenate them (and may be check for duplicates if needed): result = list(queryset1) + list(queryset2) But your option a) anyway looks more reasonable. > c) Writing a custom Manager. Managers don't do anything magical, you still have to choose wither a) or b) way. Whether to place this code into a Manager or just let it lay somewhere in the code is the whole different question, it's the matter of convenience. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---