from django.db import models
from django.utils import timezone
class Users(models.Model):
displayname = models.CharField(max_length=255, db_column='displayName', unique=True)
def __unicode__(self):
return self.displayname
class Meta:
verbose_name_plural = "Users"
class Groups(models.Model):
groupname = models.CharField(max_length=255, db_column='groupName', unique=True)
def __unicode__(self):
return self.groupshortname
class Meta:
verbose_name_plural = "Groups"
lookups.py:
from __future__ import unicode_literals
from selectable.base import ModelLookup
from selectable.registry import registry
from manitouincline.models import Users, Groups
class FruitLookup(ModelLookup):
model = Users
search_fields = ('displayname__icontains', )
registry.register(FruitLookup)
class GroupsLookup(ModelLookup):
model = Groups
search_fields = ('groupname__icontains', )
registry.register(GroupsLookup)
from django import forms
import selectable
import selectable.forms as selectable
from manitouincline.models import Users, Climbs, Waypoints, Stats, Groups, Memberships
from manitouincline.lookups import GroupLookup, FruitLookup
class FruitForm(forms.Form):
autocomplete = forms.CharField(
label='Type the name of a fruit (AutoCompleteWidget)',
widget=selectable.AutoCompleteWidget(FruitLookup), <=== Is there a way to do something like this: widget=selectable.AutoCompleteWidget(FruitLookup, GroupsLookup) ???
required=False,
)
views.py:
def example(request):
if request.method == 'POST':
form = FruitForm(request.POST)
else:
if request.GET:
form = FruitForm(initial=request.GET)
form2 = GroupsForm(initial=request.GET)
else:
form = FruitForm()
raw_post = ''
cleaned_data = ''
if request.POST:
raw_post = pprint.pformat(dict(request.POST))
if form.is_valid():
cleaned_data = pprint.pformat(getattr(form, 'cleaned_data', ''))
context = {
'cleaned_data': cleaned_data,
'form': form,
'raw_post': raw_post
}
return render_to_response('manitouincline/example.html', context, context_instance=RequestContext(request))
class InclineLookup(ModelLookup):
def get_query(self, request, term):
groups = Groups.objects.filter(groupname__icontains=term)
users = Users.objects.filter(displayname__icontains=term)
search_results = []
for group in groups:
search_results.append(group)
for user in users:
search_results.append(user)
return search_results