On 5/15/07, Collin Anderson <[EMAIL PROTECTED]> wrote: > class Laptop(models.Model): > def laptops_out_on(date): > 'get a list of laptops out on a given day' > result = Laptop.objects.none() > for x in Rental.objects.filter(checkout__lte=date, > checkin__gte=date): > result = result | x.laptops.all() > return result > laptops_out_on = staticmethod(laptops_out_on)
Why not get the list of active rentals (1 query) then get the list of laptops associated with those rentals? Also, make it a manager method rather than a static method. class LaptopManager(models.Manager): def checked_out(self, date=None): if date is None: import datetime date = datetime.date.today() active_rental_ids = [rental['id'] for rental in Rental.objects.filter(checkout__gte=date, checkin_lte=date).values('id')] qs = super(LaptopManager, self).get_query_set(). return qs.filter(rental__id__in=active_rental_ids) class Laptops(models.Model): objects = LaptopManager() #get all checked out laptops today: Laptops.objects.checked_out() ...Code not tested since I can't sandbox a project and DB quickly just now. More: http://www.djangoproject.com/documentation/db-api/#lookups-that-span-relationships --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---