DRF:models.TextChoices 的动态文字类型提示

Ful*_*ang 5 python django enums django-rest-framework

鉴于这个模型

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)
Run Code Online (Sandbox Code Playgroud)

这个函数接受作为CharField参数

fn_with_type_hint(olympian.medal)
Run Code Online (Sandbox Code Playgroud)

如何在不进行这样的硬编码的情况下更严格地输入提示参数?

def fn_with_type_hint(medal: Literal['Gold', 'Silver', 'Bronze']):
    pass
Run Code Online (Sandbox Code Playgroud)

我尝试过的

我尝试过Olympian.medal,但它只是一个字符串

medal: Olympian.medal
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个的变体但无济于事

medal: Literal[*Olympian.MedalType.values]
Run Code Online (Sandbox Code Playgroud)

我也无法使用此解决方案,因为我不是从字符串列表开始

/sf/answers/4516556831/