> If anybody has any suggestions on how to make the code more > optimized would be appreciated. Here is my view:
First, a style issue: it's considered bad form to shadow the python built-in "dict" by using a variable with the same name. Second, my eyes are bleeding from the convolution of that code. If I understand what you're trying to do, you simply want to filter the Choice objects by price, size and color if they've been specified. Thus, wouldn't you be able to do something like c = Choice.objects.get(id=h.id).style_set.all() NOT_PICKED = '--------------' if 'price' in request and request['price'] <> NOT_PICKED: c = c.filter(price=request['price']) if 'size' in request and request['size'] <> NOT_PICKED: c = c.filter(size=request['size']) if 'color' in request and request['color'] <> NOT_PICKED: c = c.filter(color=request['color']) return render_to_response('searchresult.html', { 'results': c }) which is a heckuva lot easier to read and likely piles better in terms of performance (no looping, let alone nested looping). If your request vars have multiple-selections for a given value (an iterable via the getlist() method of the QueryDict), you can smash them together: #at the top from operator import or_ #change each "c = c.filter(...)" line above to this form: c = c.filter(reduce(or_, [ Q(size=s) for s in request.getlist('size') ])) which "or"s together Q() objects for each individual size before passing it to the filter. It's not a great remedy in the "eyes bleeding" department, but both make the logic a bit easier to follow the pattern: if they submitted a {{ field }}, filter the Objects by {{ field }} As for request[varname] vs. request.POST[varname] vs. request.GET[varname] I'm not sure what the difference is (other than the obvious diff between GET & POST) without reading the code, but it should work unless you explicitly want something different. For filtering/searching purposes, I tend to prefer GET parameters because it's easy to bookmark the results if you want or send the link to someone so they can see the same results. -tim --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com 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=en -~----------~----~----~----~------~----~------~--~---