Hi,

I'd like to implement filtering for my app...currently, the filtering
I have is stateless and so I can't add onto whatever value the user
last selected.  I've also implemented each filter separately, so I'd
like to know how I can condense the five filters into one.  The code
for my filters is as follows:

def year_filter(request, year):
   vehicle_query = Vehicle.objects.filter(
        common_vehicle__year__year__exact=year
        ).exclude(status__status='Incoming')

   vehicle_list = vehicle_query.order_by(
        'common_vehicle__series__model__manufacturer__manufacturer',
        'common_vehicle__series__model__model',
        'common_vehicle__year'
   )

   vehicle = paginate(request, vehicle_list)

   year_count = vehicle_query.order_by(
        '-common_vehicle__year__year')
        .values('common_vehicle__year__year')
        .annotate(count=Count('id')
   )
   make_count = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer')
      .values
('common_vehicle__series__model__manufacturer__manufacturer')
      .annotate(count=Count('id')
)
    style_count = vehicle_query.order_by(
       'common_vehicle__body_style__style')
       .values('common_vehicle__body_style__style')
       .annotate(count=Count('id')
)
    color_count = vehicle_query.order_by(
       'exterior_colour__exterior_colour')
       .values('exterior_colour__exterior_colour')
       .annotate(count=Count('id')
)

    return render_to_response('vehicles.html', {
      'vehicle': vehicle,
      'make_count': make_count,
      'year_count': year_count,
      'style_count': style_count,
    })

def make_filter(request, make):
   vehicle_query = Vehicle.objects.filter(
      common_vehicle__series__model__manufacturer__manufacturer=make)
      .exclude(status__status='Incoming')

   vehicle_list = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer',
      'common_vehicle__series__model__model',
      'common_vehicle__year'
   )

   vehicle = paginate(request, vehicle_list)

   year_count = vehicle_query.order_by(
        '-common_vehicle__year__year')
        .values('common_vehicle__year__year')
        .annotate(count=Count('id')
   )
   make_count = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer')
      .values
('common_vehicle__series__model__manufacturer__manufacturer')
      .annotate(count=Count('id')
   )
    style_count = vehicle_query.order_by(
       'common_vehicle__body_style__style')
       .values('common_vehicle__body_style__style')
       .annotate(count=Count('id')
    )
    color_count = vehicle_query.order_by(
       'exterior_colour__exterior_colour')
       .values('exterior_colour__exterior_colour')
       .annotate(count=Count('id')
    )

    return render_to_response('vehicles.html', {
      'vehicle': vehicle,
      'make_count': make_count,
      'year_count': year_count,
      'style_count': style_count,
    })

def series_filter(request, model):
   vehicle_query = Vehicle.objects.filter(
      common_vehicle__series__series=model)
      .exclude(status__status='Incoming')

   vehicle_list = vehicle_query.order_by(
      'common_vehicle__series__series',
      'common_vehicle__series__model__model',
          'common_vehicle__year')

   vehicle = paginate(request, vehicle_list)

   year_count = vehicle_query.order_by(
        '-common_vehicle__year__year')
        .values('common_vehicle__year__year')
        .annotate(count=Count('id')
   )
   make_count = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer')
      .values
('common_vehicle__series__model__manufacturer__manufacturer')
      .annotate(count=Count('id')
    )
    style_count = vehicle_query.order_by(
       'common_vehicle__body_style__style')
       .values('common_vehicle__body_style__style')
       .annotate(count=Count('id')
    )
    color_count = vehicle_query.order_by(
       'exterior_colour__exterior_colour')
       .values('exterior_colour__exterior_colour')
       .annotate(count=Count('id')
    )

    return render_to_response('vehicles.html', {
      'vehicle': vehicle,
      'make_count': make_count,
      'year_count': year_count,
      'style_count': style_count,
    })


def body_filter(request, body):
   vehicle_query = Vehicle.objects.filter(
      common_vehicle__body_style__style=body)
      .exclude(status__status='Incoming')

   vehicle_list = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer',
      'common_vehicle__series__model__model',
      'common_vehicle__year'
    )

   vehicle = paginate(request, vehicle_list)

   year_count = vehicle_query.order_by(
        '-common_vehicle__year__year')
        .values('common_vehicle__year__year')
        .annotate(count=Count('id')
   )
   make_count = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer')
      .values
('common_vehicle__series__model__manufacturer__manufacturer')
      .annotate(count=Count('id')
    )
    style_count = vehicle_query.order_by(
       'common_vehicle__body_style__style')
       .values('common_vehicle__body_style__style')
       .annotate(count=Count('id')
    )
    color_count = vehicle_query.order_by(
       'exterior_colour__exterior_colour')
       .values('exterior_colour__exterior_colour')
       .annotate(count=Count('id')
    )

    return render_to_response('vehicles.html', {
      'vehicle': vehicle,
      'make_count': make_count,
      'year_count': year_count,
      'style_count': style_count,
    })

def color_filter(request, color):
   vehicle_query = Vehicle.objects.filter(
      exterior_colour__exterior_colour=color)
      .exclude(status__status='Incoming')

   vehicle_list = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer',
      'common_vehicle__series__model__model',
      'common_vehicle__year')

   vehicle = paginate(request, vehicle_list)

   year_count = vehicle_query.order_by(
        '-common_vehicle__year__year')
        .values('common_vehicle__year__year')
        .annotate(count=Count('id')
   )
   make_count = vehicle_query.order_by(
      'common_vehicle__series__model__manufacturer__manufacturer')
      .values
('common_vehicle__series__model__manufacturer__manufacturer')
      .annotate(count=Count('id')
   )
   style_count = vehicle_query.order_by(
      'common_vehicle__body_style__style')
      .values('common_vehicle__body_style__style')
      .annotate(count=Count('id')
   )
    color_count = vehicle_query.order_by(
       'exterior_colour__exterior_colour')
       .values('exterior_colour__exterior_colour')
       .annotate(count=Count('id')
   )

    return render_to_response('vehicles.html', {
      'vehicle': vehicle,
      'make_count': make_count,
      'year_count': year_count,
      'style_count': style_count,
    })

--

You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=.


Reply via email to