RajeshD, Tim, and Nis,
We'll I think I got it working.  I changed the following line:

Style.objects.filter(sandp__choice__in=choice_ids).distinct()
to
Style.objects.filter(sandp__in=choice_ids).distinct()

That brought back the correct records.

/////////////////////

Also, the problem with:

y = y.filter(price__price_cat=request['price'])

Actually, wasn't a problem.  There wasn't a choice that contained 249
as the price

////////////////////

Here is the final version of my view:

def searchresult(request):
        if request.method == 'POST':
                NOT_PICKED = "---------------"
                y = Choice.objects.all()
                if ('price' in request.POST and request.POST['price'] <>
NOT_PICKED):
                        y = y.filter(price__price_cat__exact=request['price'])
                if ('size' in request.POST and request.POST['size'] <> 
NOT_PICKED):
                        y = y.filter(size__size_cat__exact=request['size'])
                choice_ids = [c.id for c in y]
                styles = Style.objects.filter(sandp__in=choice_ids).distinct()
                if ('color' in request.POST) and (request.POST['color'] <>
NOT_PICKED):
                        styles = styles.filter(color_cat=request['color'])
        return render_to_response('searchresult.html', {'s': styles})

/////////////

Hopefully, it's at least readable now.

Thanks again to everybody that helped!



On Aug 10, 8:48 am, RajeshD <[EMAIL PROTECTED]> wrote:
> Hi Greg,
>
> Please see some notes below.
>
> > def searchresult(request):
> >         if request.method == 'POST':
> >                 NOT_PICKED = "---------------"
> >                 y = Choice.objects.all()
> >                 if ('price' in request.POST and request.POST['price'] <>
> > NOT_PICKED):
>
> You could simplify idioms like the above into a single condition:
>
> if request.POST.get('price', None) <> NOT_PICKED:
>
>
>
> >                         y = y.filter(price__price_cat=request['price'])
> >                 if ('size' in request.POST and request.POST['size'] <> 
> > NOT_PICKED):
> >                         y = y.filter(size__size_cat=request['size'])
> >                 choice_ids = [c.id for c in y]
> >                 styles =
> > Style.objects.filter(sandp__choice__in=choice_ids).distinct()
> >                 if ('color' in request.POST) and (request.POST['color'] <>
> > NOT_PICKED):
> >                         styles = styles.filter(color_cat=request['color'])
> >         return render_to_response('searchresult.html', {'s': styles})
>
> > ////////////////
>
> > I'm having a couple of problems with this code.  First is the
> > following code:
>
> > y = y.filter(price__price_cat=request['price'])
>
> Can you paste your entire model so we can see how you have defined
> Choices, Price, Color, etc? ManyToManyFields get trickier when you
> need to join multiple tables. I suspect that's what is causing this
> problem for you.
>
> > I currently have two prices in the 200-299 range (249 and 299).  If
> > the user does a search for price between 200-299 then the only thing
> > this filter returns is the first one.  I never returns more than one.
> > For example when i do a assert False, y after the statement above I
> > get:
>
> > AssertionError at /rugs/searchresult/
> > [<Choice: (<Size: 5'3 x 7'6>, <Price: 299>)>]
>
> > I do have a record in my choice table that has 249 as the price.
>
> Instead of using assertions and debug print statements, it will save
> you a lot of time if you dropped into a shell (python manage.py shell)
> and ran a few of these querysets directly in there. View->Browse->Fix->Repeat 
> takes much longer in situations where you are just looking to
>
> create the right query sets.


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to