How can records be queried based on the timezone of a related record?

Your “gut reaction” is the same as mine, with the exception that I would have first gone with the __range operator and ensured that the end_of_today field was created as (in text description) “today date + 1 day @ 12:00 AM, converted from user’s time zone to UTC”

I’m not familiar with the arrow library, so I don’t know what it can do for you. But the key idea here is that you want to create a timezone-aware datetime object in the person’s timezone with a time component of 0 on the next day.