title: Django complex filter and order
body: <p>I have 4 model like this</p>
  
  <pre><code>class Site(models.Model):
      name = models.CharField(max_length=200)
  
      def get_lowest_price(self, mm_date):
          '''This method returns lowest product price on a site at a particular date'''
  
  class Category(models.Model):
      name = models.CharField(max_length=200)
      site = models.ForeignKey(Site)
  
  class Product(models.Model):
      name = models.CharField(max_length=200)
      category = models.ForeignKey(Category)
  
  class Price(models.Model):
      date = models.DateField()
      price = models.IntegerField()
      product = models.ForeignKey(Product)
  </code></pre>
  
  <p>Here every have many category, every category have many product. Now product price can change every day so price model will hold the product price and date.</p>
  
  <p>My problem is I want list of site filter by price range. This price range will depends on the get_lowest_price method and can be sort Min to Max and Max to Min. Already I've used lambda expression to do that but I think it's not appropriate</p>
  
  <pre><code>sorted(Site.objects.all(), key=lambda x: x.get_lowest_price(the_date))
  </code></pre>
  
  <p>Also I can get all site within a price range by running a loop but this is also not a good idea. Please help my someone to do the query in right manner.</p>
  
  <p>If you still need more clear view of the question please see the first comment from "Ishtiaque Khan", his assumption is 100% right.</p>
  
  <p>*In these models writing frequency is low and reading frequency is high.</p>