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=.