Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>There are a number of approaches you can take, but here is one solution you can use that involves chaining together the appropriate filters based on the form's posted data:</p> <p>*Note: To conform to Python's naming convention, rename <em>exReporter</em> class to <em>ExReporter</em>.</p> <pre><code># views.py def process_ex_reporter_form(request): if request.method == "POST": # ExReporterForm implementation details not included. ex_reporter_form = ExReporterForm(request.POST) if ex_reporter_form.is_valid(): # If form field has no data, cleaned data should be None. gender = ex_reporter_form.cleaned_data['gender'] age_start = ex_reporter_form.cleaned_data['age_start'] age_end = ex_reporter_form.cleaned_data['age_end'] aggregation_group = ex_reporter_form.cleaned_data['aggregation_group'] aggregation_id = ex_reporter_form.cleaned_data['aggregation_id'] ex_reporters = ExReporter.objects.get_ex_reporters(gender, age_start, age_end, aggregation_group, aggregation_id) else: # Pass back form for correction. pass else: # Pass new form to user. pass # models.py class ExReporterManager(models.Manager): def get_ex_reporters(self, gender, age_start, age_end, aggregation_group, aggregation_id): ex_reporters = super(ExReporterManager, self).get_query_set().all() # Even though the filters are being applied in separate statements, # database will only be hit once. if ex_reporters: if gender: ex_reporters = ex_reporters.filter(gender=gender) if age_start: ex_reporters = ex_reporters.filter(age__gt=age_start) if age_end: ex_reporters = ex_reporters.filter(age__lt=age_end) # Apply further filter logic for aggregation types supported. return ex_reporters </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload