Лучший способ добавить третий атрибут к выбору моделей Django
Как следует из заголовка, какой лучший способ добавить третий атрибут к выбору перечисления модели Django, чтобы я мог получить доступ к свойству таким же образом, как value
или label
. Например, назовем этот третий атрибут text
чего я хочу:
class Vehicle(models.Model):
class VehicleType(??):
HONDA_CIVIC = 1, _("New car"), _("Vroom vroom")
FORD_MODEL_T = 2, _("Old car"), _("not so fast")
type = models.IntegerField(choices=VehicleType.choices, default=VehicleType.FORD_MODEL_T)
vehicle = Vehicle.objects.create()
vehicle.type.text
>>> not so fast
Возможно ли это без перезаписи базовой ChoicesMeta? Я попробовал вариант, описанный в python enum docs путем обновления __new__
, но, похоже, это не работает. (И да, я знаю, что могу изменить его на models.TextChoices
и отказаться от значения int, но мне интересно, легко ли это сделать)