Here is a simple example (from the example on github but not tested):
models.py:
class Person(models.Model):
    name = models.CharField(blank=True, max_length=100)
    email = models.EmailField()
    def __unicode__(self):
        return self.name
class Group(models.Model):
    name = models.CharField(max_length=200,unique=True)
    members = models.ManyToManyField(Person,blank=True,help_text="Enter text to search for and add each member of the group.")
    def __unicode__(self):
        return self.name
forms.py:
class GroupForm(ModelForm):
    class Meta:
        model = Group
    members  = make_ajax_field(Release,'members','person')
lookups.py:
class PersonLookup(LookupChannel):
    model = Person
    def get_query(self,q,request):
        return Person.objects.filter(name__icontains=q).order_by('name')
    def get_result(self,obj):
        return obj.name
    def format_match(self,obj):
        return self.format_item_display(obj)
    def format_item_display(self,obj):
        return u"%s" % escape(obj.name)
settings.py:
AJAX_LOOKUP_CHANNELS = {
     'person' : ('example.lookups', 'PersonLookup'),
}
views.py:
class Create(generic.CreateView):
    template_name = "create.html"
    form_class = GroupForm
    success_url = 'create'
create = Create.as_view()
urls.py:
urlpatterns = patterns('',
    url(r'^create',  view='views.create',name='create'),
    url(r'^ajax_lookup/(?P<channel>[-\w]+)$', 'ajax_select.views.ajax_lookup', name = 'ajax_lookup'),
)