[Fixed]-Filtering on annotations with max date in Django

1👍

This might work…

from django.db.models import F, Q
Hardware.objects
    .filter(relocation__subdivision=target_subdivision, relocation__relocation_date__lte=limit_date)
    .exclude(~Q(relocation__subdivision=target_subdivision), relocation__relocation_date__gt=F('relocation__relocation_date'))
    .distinct()

The idea is, give me all hardware that have been relocated to target division before limit date, which DON’T have been relocated to other divisions after that.

Leave a comment