Вы можете использовать дополнительный набор запросов для создания значения, которое необходимо упорядочить, например:
Team.objects.filter(school=team).select_related(depth=1)
extra(select={"first_year":"SUBSTRING(yourmodule_school.year from 1 for 4)"}).
order_by("-first_year")
Где yourmodule_school должна быть таблицей в вашей базе данных, которая должна иметь внешний ключ в Team.
Вы можете проверить, выполняет ли запрос то, что вы ожидаете, используя импорт django.db.connection и выполняя connection.queries, он будет выполнять соединения благодаря select_related (deep = 1).Другой способ сделать это без каких-либо ненужных объединений, если у вас есть более одного внешнего ключа в модуле, это сделать запрос SELECT для дополнительного поля, например:
Team.objects.filter(school=team).
extra(select={"first_year":"SELECT SUBSTRING(year from 1 for 4)
FROM yourmodule_school WHERE id=school_id"}).
order_by("-first_year")
, где school_id должен быть внешним ключомименованная школа в классе вашей команды.
Таким образом, запрос создает новое значение для выбора, которое можно использовать для упорядочивания. здесь - это документация о extra () на всякий случай.