drop down menu - Django ComboField to change page content -


i have model item called project, each project has title, description , date, comprises of either fall or spring, , year (eg. fall 2012, or spring 2013). able populate page projects using simple for loop in pages html. however, want have combofield list of dates (that can specify) in page when user selects date, projects date appear on page.

what best way accomplish this? should use django forms items or should use html select tag? if better use html tag, how 1 go accomplishing that?

blindly coding it, in forms.py:

from django import forms  .models import project  class projectfilterform(forms.form):      range = forms.choicefield(choices=[], required=false)      def __init__(self, *args, **kwargs):         super(projectfilterform, self).__init__(*args, **kwargs)         oldest = project.objects.first()         newest = project.objects.last()         if oldest , newest:             range_choices = []             year in range(oldest.date.year, newest.date.year+1):                 range_choices.append('spring {}'.format(year))                 range_choices.append('fall {}'.format(year))             self.fields['range'].choices = range_choices       def get_filtered_projects(self):         if not self.is_valid():             return []         choice = self.cleaned_data['range']         parts = choice.split(' ')         month_range = [4,5,6,7,8,9] if parts[0] == 'spring' else [10,11,12,1,2,3]         year = int(parts[1])         return project.objects.filter(date__year=year, date__month__in=month_range) 

include form part of template, , in view use get_filtered_projects generate list of projects show in rendered page.


Comments