Get All Children Question

Edited

When and Why to Use

Use this when you need a complete roster of children within an age window, including:

  • total count,

  • each child’s age (with optional recodes),

  • each child’s gender,

  • a readable “name” label (e.g., “16 year old son”) for downstream questions.

Great for: youth-targeted studies, quota setup, segmentation, or routing follow-ups to each child profile.

Chat Experience

  • Three-step flow: count → ages → genders.

  • Copy for each step is customizable via question_1_text–question_3_text.

  • Gender terms shown to respondents can be mapped to “son/daughter” (or alternatives) via gender_map.

Traditional Experience

  • Sequential screens and compact multi-field forms.

  • Numeric input for count/ages; single/multi-select for genders.

  • Summary list of created child records before proceeding (optional).

Configuration Options

Option

Type

Required

Default

Description

min_age

int

yes

Minimum eligible age.

max_age

int

yes

Maximum eligible age.

age_recodes

Optional[Dict[int, str]]

no

None

Map raw ages to recoded labels (e.g., 13: "Secondary").

gender_map

Optional[Dict[str, str]]

no

{ "Male": "son", "Female": "daughter" }

Maps gender → child term used in the “name” label.

question_1_text

Optional[str]

no

"How many children do you have between the ages of {min_age} and {max_age}?"

Custom text for count prompt.

question_2_text

Optional[str]

no

"For each child, please let us know their age"

Custom text for ages prompt.

question_3_text

Optional[str]

no

"Now, please let us know their gender"

Custom text for genders prompt.

Return Value

List[StringResponse] — One StringResponse per child, with tags attached:

  • age: the recoded age (if age_recodes supplied; otherwise raw age as string),

  • gender: the selected gender,

  • name: a readable label combining age and gender_map term (e.g., “16 year old son”).

If the respondent reports no eligible children, returns an empty list.

Example Code

Basic usage

from survey import Survey s = Survey(**globals()) children = s.get_all_children_age_gender( min_age=5, max_age=18, ) for child in children: s.text_question(f"What is {child.name}'s favorite subject in school?") s.complete()

With age recodes and custom gender terms

children = s.get_all_children_age_gender( min_age=5, max_age=17, age_recodes={ 5: "Pre-school", 6: "Primary", 7: "Primary", 8: "Primary", 9: "Primary", 10: "Primary", 11: "Secondary", 12: "Secondary", 13: "Secondary", 14: "Secondary", 15: "Secondary", 16: "Secondary", 17: "Secondary", }, gender_map={"Male": "boy", "Female": "girl"}, )

Custom question copy

children = s.get_all_children_age_gender( min_age=10, max_age=16, question_1_text="Between {min_age} and {max_age}, how many children live in your household?", question_2_text="Please enter each child's age.", question_3_text="Please select each child's gender." )

Notes

  • Validation is performed on raw ages; age_recodes affect labels/reporting only.

  • Expand gender options as needed (e.g., “Non-binary,” “Prefer not to say”); use gender_map to control the child term used in name.

  • The name field is for respondent-friendly copy; avoid relying on it for programmatic logic—use age and gender tags instead.

Was this article helpful?

Sorry about that! Care to tell us more?

Thanks for the feedback!

There was an issue submitting your feedback
Please check your connection and try again.