Article
Get All Children Question
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.