title: How to access both directions of ManyToManyField in Django Admin?
body: <p>The Django admin <code>filter_horizontal</code> setting gives a nice widget for editing a many-to-many relation. But it's a special setting that wants a list of fields, so it's only available on the (admin for the) model which defines the <code>ManyToManyField</code>; how can I get the same widget on the (admin for the) <em>other</em> model, reading the relationship backwards?</p>
  
  <p>My models look like this (feel free to ignore the <code>User</code>/<code>UserProfile</code> complication; it's the real use case though):</p>
  
  <pre><code>class Site(models.Model):
      pass
  class UserProfile(models.Model):
      user = models.OneToOneField(to=User,unique=True)
      sites = models.ManyToManyField(Site,blank=True)
  </code></pre>
  
  <p>I can get a nice widget on the admin form for <code>UserProfile</code> with</p>
  
  <pre><code>filter_horizontal = ('sites',)
  </code></pre>
  
  <p>but can't see how to get the equivalent on the <code>Site</code> admin.</p>
  
  <p>I can also get part-way by adding an inline to <code>SiteAdmin</code>, defined as:</p>
  
  <pre><code>class SiteAccessInline(admin_module.TabularInline):
      model = UserProfile.sites.through
  </code></pre>
  
  <p>It's roundabout and unhandy though; the widget is not at all intuitive for simply managing the many-to-many relationship.</p>
  
  <p>Finally, there's a trick <a href="http://www.eivanov.com/2009/01/manytomany-relations-in-django.html" rel="noreferrer">described here</a> which involves defining another <code>ManyToManyField</code> on <code>Site</code> and making sure it points to the same database table (and jumping through some hoops because Django isn't really designed to have different fields on different models describing the same data). I'm hoping someone can show me something cleaner.</p>