Django Выбор поля из списка

у меня есть небольшой вопрос о формах.

Итак, обычно я создаю форму выбора следующим образом:

Metric_name_CHOICES = [
        ('Transfer', 'Transfer'),
        ('RFI/RFD', 'RFI/RFD'),
        ('...', '...')
    ]
Metric_name = forms.ChoiceField(choices=correct_associate_action_CHOICES, widget=forms.Select)

Это отличный метод, но что если я хочу, чтобы список вариантов был получен из списка в модели?

Я думаю, что-то вроде:

Metric_name = forms.ChoiceField(choices=dv_model.objects.get(Metric_name_dv), widget=forms.Select)

Итак, чтобы взять все поля внутри столбца в модели и отобразить их в виде выпадающего поля.

В этом случае вы используете ModelChoiceField [Django-doc]. Это ChoiceField, но где варианты выбора представляют объекты модели. Например, это поле формы по умолчанию для ForeignKey.

Таким образом, вы можете реализовать это с помощью:

Metric_name = forms.ModelChoiceField(
    queryset=dv_model.objects.all(),
    widget=forms.Select
)

В качестве ключевого элемента будет использоваться первичный ключ объекта dv_model, а в качестве текста опции - результат выполнения str(…) на этом объекте модели.

В основном я делаю так для поля выбора:

В файле models.py:

Metric_name_CHOICES = (
        ('Transfer', 'Transfer'),
        ('RFI/RFD', 'RFI/RFD'),
        ('...', '...')
    )

Metric_name = models.CharField(max_length=70,choices=Metric_name_CHOICES,default="")

Если вы хотите передать значение по умолчанию, вы можете выбрать один из вариантов

И в файле forms.py:

'Metric_name ': forms.Select(attrs={'class': 'form-control'})

Надеюсь, это поможет вам....

Вернуться на верх