Как программно создать в django `models.Textchoices`?
Как создать django models.Textchoices программно?
В документе django doc показано, что вы можете определить model.TextChoices с помощью:
class YearInSchool(models.TextChoices):
FRESHMAN = 'FR', _('Freshman')
SOPHOMORE = 'SO', _('Sophomore')
JUNIOR = 'JR', _('Junior')
SENIOR = 'SR', _('Senior')
GRADUATE = 'GR', _('Graduate')
Как я могу программно создать такой же класс choices из списка key, values?
mapping = {
'FRESHMAN': 'FR', 'SOPHOMORE': 'SO, 'JUNIOR': 'JR',
'SENIOR': 'SR', 'GRADUATE': 'GR'
}
# ???
YearInSchool = build_model_text_choices(mapping)
Попробуйте преобразовать его в dict
mapping = {value: key for key, value in YearInSchool.choices}
actual_status = mapping[display_status]
Попробуйте это:
def build_model_text_choices(mapping, class_name):
for key, value in mapping.items():
setattr(class_name, key, value)