Допустим, у меня есть следующая Django модель:
class Person(models.Model):
SHIRT_SIZES = (
(0, 'Small'),
(1, 'Medium'),
(2, 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.IntegerField(choices=SHIRT_SIZES)
Я могу создать экземпляр Person
и получить очень просто отображаемое значение shirt_size :
john = Person(name="John", shirt_size=2)
john.shirt_size # 2
john.get_shirt_size_display() # 'Medium'
Как я могу сделать это по-другому? То есть, учитывая размер рубашки Medium
, как я могу получить целочисленное значение? У меня есть метод для этого или я должен написать свой собственный метод для объекта Person
, например:
class Person(models.Model):
...
@staticmethod
def get_shirt_size_key_from_display_value(display_value):
for (key, value) in Person.SHIRT_SIZES:
if value == display_value:
return key
raise ValueError(f"No product type with display value {display_value}")