DRF: Подсказка динамического литерального типа для models.TextChoices

Данная модель

from django.db import models

class Olympian(models.Model):
    MedalType = models.TextChoices('MedalType', 'GOLD SILVER BRONZE')
    medal = models.CharField(max_length=6, choices=MedalType.choices, default=MedalType.GOLD)

и эта функция, которая принимает CharField в качестве параметра

fn_with_type_hint(olympian.medal)

Как я могу напечатать параметр более строго, без жесткого кодирования, как сейчас?

def fn_with_type_hint(medal: Literal['Gold', 'Silver', 'Bronze']):
    pass

Что я пробовал

Я пробовал Olympian.medal, но это просто строка

medal: Olympian.medal

Я также пробовал вариации этого безрезультатно

medal: Literal[*Olympian.MedalType.values]

Я также не могу использовать это решение, потому что я не начинаю со списка строк

https://stackoverflow.com/a/64522240/8479344

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