title: Django Prefetch with custom queryset which uses managers method
body: <p>Let's look at example from django docs with Pizza and Topping models.
  One pizza may have multiple toppings.</p>
  
  <p>If we make a query:</p>
  
  <pre><code>pizzas = Pizza.objects.prefetch_related('toppings')
  </code></pre>
  
  <p>We'll get all the pizzas and their toppings in 2 queries.
  Now let's suppose that I want to prefetch only vegetarian toppings (assume we have such property):</p>
  
  <pre><code>pizzas = Pizza.objects.prefetch_related(
      Prefetch('toppings', queryset=Topping.objects.filter(is_vegetarian=True))
  )
  </code></pre>
  
  <p>It works pretty well and Django doesn't perform yet another query for each pizza, when making something like this:</p>
  
  <pre><code>for pizza in pizzas:
      print(pizza.toppings.filter(is_vegetarian=True))
  </code></pre>
  
  <p>Now let's suppose We have a custom manager for Topping model and we decided to put there a method that allows us to filter only vegetarian toppings like in code example above:</p>
  
  <pre><code>class ToppingManager(models.Manager):
      def filter_vegetarian(self):
          return self.filter(is_vegetarian=True)
  </code></pre>
  
  <p>Now I make a new query and prefetch custom queryset with my method from manager:</p>
  
  <pre><code>    pizzas = Pizza.objects.prefetch_related(
          Prefetch('toppings', queryset=Topping.objects.filter_vegetarian()))
  </code></pre>
  
  <p>And the try to execute my code:</p>
  
  <pre><code>    for pizza in pizzas:
          print(pizza.toppings.filter_vegeterian())
  </code></pre>
  
  <p>I get a new one query for each iteration of the loop.
  That is my question. Why?
  Both these constructions return the same type object which is queryset:</p>
  
  <pre><code>   Topping.objects.filter_vegetarian()
     Topping.objects.filter(is_vegetarian=True)
  </code></pre>