I've a search page that allows users to search for a "ZoningCase" by many 
different parameters, some from the ZoningCase object and some from several 
related objects.  The user can combine 1 or more of these parameters for 
their search.  My view chains together filters on the queryset based on the 
parameters selected.  All of this works fine. After I've finished chaining 
filters, I add one additional order_by chain, to sort the cases by 
case_number.  This works, in that the select query django builds is 
correct, having the correct order by clause at the end.

Next, to prepare the cases for display, I iterate through the queryset and 
create a custom class for each case, appending that class to a list.  Here, 
it seems, the ordering breaks down.  It's as if the iterator ignores the 
order_by clause and just loops through however it feels like! As I begin 
the loop, it calls into query.py, the __iter__ method, and looking at 
self._result_cache, my ZoningCase objects in the queryset are unordered 
(e.g., 109, 129, 101,...).  I can easily fix it by sorting my final list, 
but since order_by has always worked for me when doing simply queries, I'm 
wondering if I'm doing something wrong.  My relevant code is below.  Thanks 
in advance

for key, value in form.cleaned_data.items():
if key == 'council_district':
if value.count() > 0:
if cases == None:
cases = ZoningCase.objects.filter(councildistrict__in=value)
else:
cases = cases.filter(councildistrict__in=value)
if key == 'cpc':
case_dates = CaseCPCDate.objects.filter(cpc_meeting=value)
if case_dates.count() > 0:
if cases == None:
cases = ZoningCase.objects.filter(casecpcdate__in=case_dates)
else:
cases = cases.filter(casecpcdate__in=case_dates)
if key == 'cc':
case_dates = CaseCCDate.objects.filter(cc_meeting=value)
if case_dates.count() > 0:
if cases == None:
cases = ZoningCase.objects.filter(caseccdate__in=case_dates)
else:
cases = cases.filter(caseccdate__in=case_dates)
if key == 'request_type':
if value.count() > 0:
if cases == None:
cases = ZoningCase.objects.filter(zoningrequest__request_type=value)
else:
cases = cases.filter(zoningrequest__request_type=value)
if value is not None and value != '' and value != False and key != 'cpc' 
and key != 'cc' and key != 'council_district' and key != 'request_type':
if cases == None:
cases = ZoningCase.objects.filter(**{key: value})
else:
cases = cases.filter(**{key: value})
if cases != None:
cases.order_by('case_number')
for c in cases:
zoningResults.append(ZoningSearchResult(c))

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f6ed6295-4a11-44e2-981d-15be8d1f79c0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to