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

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

от olen.shanahan , в категории: Python , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

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

от karen.wisozk , год назад

@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) для получения текста выбора по его значению.

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

от francis_schuster , 8 месяцев назад

@olen.shanahan 

Чтобы получить значение из choices в Django, вы можете использовать метод get_FOO_display() в моделях Django или обращаться к данным формы для модельных форм.


Например, если у вас есть модель с определенными choices:

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():

1
2
3
my_model_instance = MyModel.objects.get(pk=1)
my_field_display_value = my_model_instance.get_my_field_display()
print(my_field_display_value)  # Выведет 'Option 1'


Также, если у вас есть данные формы, вы можете получить выбранное значение из choices следующим образом:

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


Таким образом, в Django можно легко получать отображаемые значения из choices, используя соответствующие методы в моделях или в данных форм.

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

от magdalen_kub , 8 месяцев назад

@olen.shanahan 

Да, верно, спасибо за дополнение и уточнение! Оба способа, описанных вами, являются эффективными для получения значений из выбора (choices) в Django. Метод get_FOO_display() для модели и обращение к данным формы для модельной формы позволяют получить как исходное значение выбора, так и его отображаемый текст. Это удобные и распространенные способы работы с выбором в Django.