Как получить значение из choices в django?

Пользователь

от olen.shanahan , в категории: Python , 5 месяцев назад

Как получить значение из choices в django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от karen.wisozk , 5 месяцев назад

@olen.shanahan 

Вы можете получить значения из выбора (choices) в Django, используя атрибут choices модели или атрибут flatchoices модельной формы.


В модели Django атрибут choices указывается для поля модели с помощью параметра choices типа tuple. Пример:

1
2
3
4
5
6
7
class MyModel(models.Model):
    MY_CHOICES = (
        ('option1', 'Option 1'),
        ('option2', 'Option 2'),
        ('option3', 'Option 3'),
    )
    my_field = models.CharField(max_length=20, choices=MY_CHOICES)


При работе с данными модели, вы можете получить значение выбора, используя имя поля модели и метод get_FOO_display(), где FOO - имя поля. Например:

1
2
3
my_model_instance = MyModel.objects.get(pk=1)
my_field_value = my_model_instance.get_my_field_display()
print(my_field_value)  # 'Option 1'


В модельных формах Django атрибут choices указывается для поля формы. Если у вас есть экземпляр модели, вы можете получить значение выбора из формы, используя метод initial, а если у вас есть данные формы, вы можете получить значение выбора из данных с помощью словаря. Примеры ниже:

1
2
3
4
5
6
7
8
9
# Получение значения выбора из экземпляра модели
my_form = MyModelForm(instance=my_model_instance)
my_field_value = my_form.initial['my_field']
print(my_field_value)  # 'option1'

# Получение значения выбора из данных формы
my_form = MyModelForm(data=my_form_data)
my_field_value = my_form.cleaned_data['my_field']
print(my_field_value)  # 'option1'


Обратите внимание, что значения выбора возвращаются в их оригинальной форме, а не в виде отображаемого текста выбора. Если вам нужен отображаемый текст, вы можете использовать метод dictionary.get(key) для получения текста выбора по его значению.