Hi Eileen,

Your problem seems to be the line

          if form.is_valid() and form.data['gender'] != '-----':

It seems it will only accept the form if the gender is not "-----"; if you
change that (say, removing the part after the and), it should solve it.

... although you should have a better understanding of what your
application does to know if that will work or not.

On Fri, Jan 26, 2018 at 3:26 PM, <eil...@themaii.org> wrote:

> I should add that this initally loads a list of children without
> specifying either gender or age
>
>
> On Friday, January 26, 2018 at 12:05:04 PM UTC-5, eil...@themaii.org
> wrote:
>>
>> I have a file: views.py which refers to two main fields on the page: age
>> and gender
>> Right now, the search requires that an age to be chosen whether or not
>> the gender is, and I'd like to make the age optional as well. I.e get all
>> the children.
>> Additionally, I'd like to search for only males or females without
>> selecting an age...
>>
>> -Eileen
>> from __future__ import unicode_literals
>> from django.contrib.auth import get_user_model
>> from django.shortcuts import redirect
>> from django.template.response import TemplateResponse
>> from django.http import HttpResponse
>> from django.db.models import Q
>> from django.db.models import F
>> from mezzanine.conf import settings
>> from sponsorship.forms import FilterForm
>> from sponsorship.models import Child
>> from pinax.stripe.models import Customer
>> import json
>> import logging
>>
>> logger = logging.getLogger(__name__)
>>
>> User = get_user_model()
>>
>> steps = [{'title': 'Find a child to sponsor', 'no': '1'}, {'title': 'Sign
>> up or sign in', 'no': '2'}]
>>
>> def filterchain_all(request, app_name, model_name, method_name, gender):
>>     gender_dict = {'MALE': 0, 'FEMALE': 1}
>>     if gender in gender_dict:
>>         qs = Child.objects.filter(gender=gender_dict[gender]).order_by('
>> age')
>>         results = list(qs)
>>         final = []
>>         for item in results:
>>             if int(item.age) not in [d['display'] for d in final]:
>>                 final.append({'value': int(item.age), 'display':
>> int(item.age)})
>>         return HttpResponse(json.dumps(final),
>> content_type='application/json')
>>     else:
>>         return HttpResponse(json.dumps({'success': True}),
>> content_type='application/json')
>>
>> def children_list(request, template="pages/sponsorship.html",
>> extra_context=None):
>>     templates = []
>>     templates.append(template)
>>     children = Child.objects.filter(Q(has_photo=1) &
>> Q(image__isnull=False) & Q(sponsor__isnull=True))
>>     context = {"child_filter": children, "filter_form": FilterForm(),
>> "steps": steps, "activestep": "1"}
>>     if request.method == "POST":
>>         if "id" in request.POST:
>>             child_id = context['child_filter'].filter
>> (id=request.POST['id'])[0].child_id
>>             authenticated = request.user.is_authenticated()
>>             if settings.SHOP_CHECKOUT_ACCOUNT_REQUIRED and not
>> authenticated:
>>                 url = "/accounts/signup/?next=/donat
>> e/product/sponsor-a-child/new_customer/%s" % child_id
>>                 return redirect(url)
>>             else:
>>                 url = "/donate/product/sponsor-a-child/%s" % child_id
>>                 return redirect(url)
>>         else:
>>           form = FilterForm(request.POST)
>>           gender_dict = {'MALE': 0, 'FEMALE': 1}
>>
>>           search_message = "There are no children that match your
>> selection"
>>           if form.is_valid() and form.data['gender'] != '-----':
>>             if form.data['gender'] is 0 or 1:
>>               q = context['child_filter'].filter
>> (Q(gender=gender_dict[request.POST['gender']]))
>>
>>             import pdb; pdb.set_trace()
>>             if form['handicapped'].data == 1 or 2:
>>                 q = context['child_filter'].filter
>> (Q(handicapped=handicapped_dict[request.POST['handicapped']]))
>>
>>             if request.POST['age'] != '':
>>                 q = context['child_filter'].filter
>> (Q(age=request.POST['age']))
>>
>> # start of output using search parameters
>>
>>             if q.count() > 1:
>>               search_message = "There are %s children that match your
>> selection of %s"  %  (q.count(), request.POST['gender'])
>>             else:
>>               search_message = "There is 1 child that matches your
>> selection of %s"  %  (request.POST['gender'])
>>
>>             if q.count() > 1:
>>                search_message = ", age: %s"  %  (request.POST['age'])
>>             else:
>>                search_message = ", age: %s"  % (request.POST['age'])
>>
>>             context['child_filter'] = q
>>             context['filter_form'] = FilterForm()
>>             context['activestep'] = "1"
>>             context['search_message'] = search_message
>>             extra_context = {"message": "Updating filter"}
>>             context.update(extra_context or {})
>>             return TemplateResponse(request, templates, context)
>>           else:
>>               context['filter_form'] = form
>>               extra_context = {"message":"Something went wrong"}
>>               context.update(extra_context or {})
>>               return TemplateResponse(request, templates, context)
>>
>>     else:
>>         context.update(extra_context or {})
>>         return TemplateResponse(request, templates, context)
>>
>>
>> def child_detail(request, template="pages/sponsorship.html",
>> extra_context=None, pk=None):
>>     templates = []
>>     templates.append(template)
>>     children = Child.objects.filter(pk=pk)
>>
>>     if request.method == "GET":
>>         context = {"child_filter": children, "filter_form": FilterForm(),
>> "steps": steps, "activestep": "3"}
>>     else:
>>         context = {"child_filter": children, "filter_form": FilterForm(),
>> "steps": steps, "activestep": "4"}
>>
>>     context.update(extra_context or {})
>>     return TemplateResponse(request, templates, context)
>>
>>
>> def final_order_handler(request, order_form, order):
>>     """
>>     Default order handler - called when the order is complete and
>>     contains its final data. Implement your own and specify the path
>>     to import it from via the setting ``SHOP_HANDLER_ORDER``.
>>     """
>>     child_id = order.items.all()[0].child_id
>>     if child_id != "":
>>         child = Child.objects.get(child_id=child_id)
>>         current_customer = Customer.objects.get(user=request.user)
>>         child.sponsor = current_customer
>>         child.save()
>>
>> --
> 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 https://groups.google.com/group/django-users.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/django-users/b2510159-5162-4c5b-9b57-7847f42b0a0a%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/b2510159-5162-4c5b-9b57-7847f42b0a0a%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
*Julio Biason*, Sofware Engineer
*AZION*  |  Deliver. Accelerate. Protect.
Office: +55 51 3083 8101 <callto:+555130838101>  |  Mobile: +55 51
<callto:+5551996209291>*99907 0554*

-- 
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 https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAEM7gE2kGYRn2kRH94uQmj8nyzizg1j6ZGT7ttgUodM3rSf%3DtA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to