Почему Django игнорирует порядок условий в filter()?

При фильтрации нескольких условий с помощью Django queryset filter(), порядок условий в filter() не гарантируется.

Особенно когда я фильтрую поля даты/времени, они фильтруются последними в предложении WHERE.

Эти два набора запросов генерируют один и тот же SQL с одним и тем же предложением WHERE.

dt = datetime(2022, 1, 1)
User.objects.filter(joined_at__lt=dt, is_active=True)
User.objects.filter(is_active=True, joined_at__lt=dt)
SELECT * FROM `user` WHERE (`user`.`is_active` = 1 AND `user`.`joined_at` < '2022-01-01 00:00:00')

Я знаю, что могу решить эту проблему с помощью цепочки фильтров.

Но мне интересно, почему Django игнорирует порядок условий в filter(). И по какому правилу Django определяет порядок в filter()?

Вернуться на верх