title: Django queryset with left join?
body: <p>Suppose I have</p>
  <pre><code>from django.db import models
  
  class Obj(models.Model):
      obj_text = models.CharField(max_length=100)
  
  class ObjAnnot(models.Model):
      obj = models.ForeignKey(Obj, on_delete=models.CASCADE)
      annot_text = models.CharField(max_length=100)
  </code></pre>
  <p>I want to efficiently get all <code>Obj</code> objects with zero associated <code>ObjAnnot</code> instances.</p>
  <p>I could iterate over all <code>Obj</code> instances and query how many associated <code>ObjAnnot</code> instances there are, but that seems quite inefficient.</p>
  <p>In SQL, I would do a left outer join, and pick the rows with objannot.id null.</p>
  <p>How can I do that with the Django ORM?</p>
  <p><strong>EDIT</strong>: <a href="https://stackoverflow.com/questions/6500066/annotating-a-django-queryset-with-a-left-outer-join">Possible duplicate question</a>.</p>