title: Empty querysets in Django
body: <p>I have a ListView in Django whose get_queryset() method will sometimes need to return no results.  I've tried three ways to do this:</p>
  
  <ol>
  <li><code>return EmptyQuerySet()</code></li>
  <li><code>return Model.objects.none()</code></li>
  <li><code>return Model.objects.filter(pk=-1)</code></li>
  </ol>
  
  <p>Each one of these returns a slightly different object.</p>
  
  <ol>
  <li><code>django.db.models.query.EmptyQuerySet</code> with its model attribute set to <code>None</code></li>
  <li><code>django.db.models.query.EmptyQuerySet</code> with its model attribute set to <code>Model</code></li>
  <li><code>django.db.models.query.QuerySet</code> with its model attribute set to <code>Model</code></li>
  </ol>
  
  <p>Only the third option works with the class based ListView.  The other options crash on an attribute error when the ListView tries to access the model attribute.  This surprises me and is a pain as it requires me to import Model in places where that can cause MRO issues.</p>
  
  <p>What am I doing wrong/what should I be doing differently?</p>
  
  <p><strong>Update</strong>: The question then is, what is the right way to return an empty queryset via the class view method <code>get_queryset()</code>?</p>
  
  <p><strong>Update</strong>: Here is the line in Django's generic views that hits an attribute error when trying access the <code>model</code> attribute: <a href="https://github.com/django/django/blob/stable/1.5.x/django/views/generic/list.py#L166" rel="noreferrer">https://github.com/django/django/blob/stable/1.5.x/django/views/generic/list.py#L166</a>.</p>