title: Filter queryset by date on prefetch_related
body: <p>I need to filter a queryset by comparing dates on related objects, but the filter its ignored.</p>
  
  <p>My resumed model is:</p>
  
  <pre><code>class Requerimiento(models.Model):
      nombre = models.CharField(max_length=30)
      fecha_publicacion = models.DateField(default=datetime.now)
      fecha_aprobacion = models.DateField(default=datetime.now, blank=True)
      aprobacion = models.BooleanField()
      autor = models.ForeignKey(User, null=True, blank=True)
  
      def __unicode__(self):
              return self.nombre
  
  class Contexto(models.Model):
      nombre = models.CharField(max_length=30)
      requerimientos = models.ManyToManyField(Requerimiento, 
          related_name = 'contextos')
  
      def __unicode__(self):
              return self.nombre
  
  class Proyecto(models.Model):
      nombre = models.CharField(max_length=30)
      cod_proyecto = models.CharField(max_length=10)
      contextos = models.ManyToManyField('Contexto', related_name = 'proyectos')
      fecha_publicacion  = models.DateField(default=datetime.now)
      autor = models.ForeignKey(User, null=True, blank=True)
  </code></pre>
  
  <p>And the queryset is:</p>
  
  <pre><code>queryset=Proyecto.objects.filter(pk=proyecto_id)\
      .prefetch_related('contextos')\
      .prefetch_related('contextos__requerimientos')\
      .filter(contextos__requerimientos__fecha_aprobacion__lte=F('fecha_publicacion'))
  </code></pre>
  
  <p>What i'm doing wrong?</p>
  
  <p><em>EDIT</em></p>
  
  <p>Looking with debug-toolbar i see the following with proyect id 2 selected in the following code</p>
  
  <pre><code>requerimientos = ProyectoFilter(request.GET,
      queryset=Proyecto.objects.filter(pk=proyecto_id)
      .distinct()
      .prefetch_related('contextos')
      .prefetch_related('contextos__requerimientos')
      .filter(contextos__requerimientos__fecha_aprobacion__lte=F('fecha_publicacion')))
  </code></pre>
  
  <p>First query:</p>
  
  <pre><code>SELECT ••• FROM "sgrs_proyecto" INNER JOIN "sgrs_proyecto_contextos" 
  ON ( "sgrs_proyecto"."id" = "sgrs_proyecto_contextos"."proyecto_id" ) 
  INNER JOIN "sgrs_contexto" ON ( "sgrs_proyecto_contextos"."contexto_id" =  
  "sgrs_contexto"."id" ) INNER JOIN "sgrs_contexto_requerimientos" 
  ON ( "sgrs_contexto"."id" = "sgrs_contexto_requerimientos"."contexto_id" ) 
  INNER JOIN "sgrs_requerimiento" ON ( "sgrs_contexto_requerimientos"."requerimiento_id" = "sgrs_requerimiento"."id" ) 
  WHERE ("sgrs_proyecto"."id" = 2 AND "sgrs_requerimiento"."fecha_aprobacion" 
  &lt;= "sgrs_proyecto"."fecha_publicacion")
  </code></pre>
  
  <p>Second query:</p>
  
  <pre><code>SELECT ••• FROM "sgrs_contexto" INNER JOIN "sgrs_proyecto_contextos" 
  ON ( "sgrs_contexto"."id" = "sgrs_proyecto_contextos"."contexto_id" ) 
  WHERE "sgrs_proyecto_contextos"."proyecto_id" IN (2) 
  ORDER BY "sgrs_contexto"."indice_riesgo" DESC
  </code></pre>
  
  <p>Third query:</p>
  
  <pre><code>SELECT ••• FROM "sgrs_requerimiento" INNER JOIN "sgrs_contexto_requerimientos" 
  ON ( "sgrs_requerimiento"."id" = "sgrs_contexto_requerimientos"."requerimiento_id" )
  WHERE "sgrs_contexto_requerimientos"."contexto_id" IN (3, 7, 6, 4, 2, 5, 1)
  </code></pre>
  
  <p>The date filter is in the first query and should be in the third, is this correct?
  How can i get the correct filter position?</p>
  
  <p>Thanks</p>