Django order_by alpha first then numeric on attribute with both

У меня есть модель, в которой есть атрибут grade, который является CharField и может быть буквенным или числовым (например, он может содержать любое из следующих значений: "K", "A", "5", "2", "1", "4")

Я пытаюсь .order_by в своем наборе запросов, но хотел бы, чтобы сначала шли альфа, а затем числовые.

Я хотел бы видеть набор запросов, упорядоченный по "A", "K", "1", "2", "3", но мне трудно этого добиться.

Я видел некоторые решения, которые включают использование .extra(), но я стараюсь избегать этого, так как в Django.

это устарело.

Каков наилучший способ достичь этого?

my_things = (
    Thing.objects.filter(
        location__in=locations,
        year=current_year,
    )
    .annotate(first_letter_group=Substr("grade", 1, 1))
    .values(
        "first_letter_group",
    )
    .order_by("first_letter_group")
    .distinct()
    .order_by("grade")
)
Вернуться на верх