Hey Djangoists!
I can't get my head around this and I'm not sure if it's even possible.
Let's say I have an "Adult" object and a "Child" object. Every Child belongs to an Adult, and has a gender which is either "M" or "F", and also a "dob" field with their date of birth. I want to get a list of all adults annotated with the dob of their oldest son, and the dob of their oldest daughter.
How am I to do this?
I tried something like this:
Adult.objects.annotate(
oldest_son_dob=Case(
When(children__gender="M", then=F('children__dob')),
default=None,
output_field=DateField(),
)
)
# ... same for daughter
but I'm not sure where to tell Django that I only want it to pick the oldest child, and so right now it duplicates the adult object for every child it has.
Does Django support this kind of query?
I'm using PosgresSQL FWIW.
Thank you so much
Yo'av