title: Django, multi-table inheritance is that bad?
body: <p>This isn't really specific to django.  </p>
  
  <p>One can model </p>
  
  <pre><code>Place (with location, name, and other common attributes)
   - Restaurant  (menu..)
   - ConcertHall  (hall size..)
  </code></pre>
  
  <ol>
  <li>in two separate tables and let each one hold all the fields they need. (in django world, this is called abstract inheritance)</li>
  <li>in three tables, where one holds the common fields and the other two has their own unique fields. (multi-table inheritance in django)</li>
  </ol>
  
  <p>The authors of book <a href="https://books.google.co.kr/books?id=yIpcCQAAQBAJ&amp;pg=PA62&amp;lpg=PA62&amp;dq=django%20multi%20table%20vs%20abstract&amp;source=bl&amp;ots=-fM5dApusl&amp;sig=mg5doiuzRFX1wCdLagdnS0RShVE&amp;hl=en&amp;sa=X&amp;ei=g3dlVcw4wtOYBYOOg-AJ&amp;ved=0CMEBEOgBMBk#v=onepage&amp;q=django%20multi%20table%20vs%20abstractmulti&amp;f=false" rel="nofollow">Two scoops of Django 1.8</a> strongly advise against using multi-table inheritance.</p>
  
  <p>Say you want to query places based on it's location and paginate the results (It doesn't have to be a location, can be any other common attribute we want to filter on)</p>
  
  <p>I can see how I can achieve it using Multi-table inheritance.  </p>
  
  <blockquote>
    <p>select place.id from place LEFT OUTER JOIN "restaurant" on (
    restuarant.id=place.id) LEFT OUTER JOIN "concerthall" on (
    concerthall.id=place.id) where ... order by distance</p>
  </blockquote>
  
  <p>Is it feasible to do it with abstract inheritance?</p>