title: Django ModelForm Validate custom Autocomplete for M2M, instead of ugly Multi-Select
body: <p>Given the following models (cut down for understanding): </p>
  
  <pre><code>class Venue(models.Model):
      name = models.CharField(unique=True)
  
  class Band(models.Model):
      name = models.CharField(unique=True)
  
  class Event(models.Model):    
      name = models.CharField(max_length=50, unique=True)       
      bands = models.ManyToManyField(Band) 
      venue = models.ForeignKey(Venue)
      start = models.DateField()
      end = models.DateField()
  </code></pre>
  
  <p>The admin area works great for what I'm doing, but I'd like to open the site up a bit so that certain users can add new Events. For the public portions, I have several "administrative" fields on these models that I don't want the public to see (which is easy enough to fix). </p>
  
  <p>My specific problem, though, is changing the display of the ManyToMany selections when creating a new Event. Because the number of Bands possible to list for an event should not be sent along as a multiselect box, I'd like to use an AutoComplete that handles multiples (like the Tags box, here on StackOverflow!). </p>
  
  <p><strong>I have this part working</strong>, and it correctly fills in a hidden input with the Band.id's separated by commas for a value. <strong>However</strong>, I can't understand how to put together letting Django do the validation using the <strong>ModelForms</strong>, and somehow also validating the 'Bands' selection. </p>
  
  <p>Ideally, I want to auto-complete like the tags here on StackOverflow, and send along the selected Bands ID's in some kind of Delimited string - all while letting Django validate that the bands passed exist, etc, as if I left the annoying multi-select list in place. </p>
  
  <p>Do I have to create my own Auto-Complete Field type for a form or model, and use that? Is there something else I'm overlooking? </p>
  
  <p><em>I have seen some existing AutoComplete widgets, but I'd really-really-really like to use my own Autocomplete code, since it's already set up, and some of them look a bit convoluted.</em></p>
  
  <p><em>There was a lot more text/explanation here, but I cut back because I'm avoiding Wall Of Text. If I left important stuff out, let me know.</em></p>