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'})
Надеюсь, это поможет вам....