Как сделать динамические поля выбора на основе моделей в формах django?
У меня есть групповая модель, и я хочу использовать ее объекты в своей форме. Я хотел бы иметь динамический кортеж выбора, основанный на объектах групповой модели! Как я могу это сделать? Я использовал следующий код :
class Employee_Form(forms.Form):
GROUPS = ()
try:
GROUPS = (
)
for i in Group.objects.all():
GROUPS += ((i.name , i.name),)
except:
pass
phone = forms.CharField(max_length=12)
name = forms.CharField(max_length=50)
position = forms.CharField(max_length=30)
group = forms.ChoiceField(choices=GROUPS)
У этого кода есть проблема . каждый раз когда вы добавляете новый объект к вашей модели вы должны перезапустить сервер после этого Но это не рекомендуется! и еще одна важная вещь - я хочу использовать forms.Form, а не modelForm.
То, что вы пытаетесь сделать, уже существует: ModelChoiceField
form поле [Django-doc], оно принимает QuerySet
и использует первичный ключ как идентификатор для определения выбранного элемента:
class Employee_Form(forms.Form):
phone = forms.CharField(max_length=12)
name = forms.CharField(max_length=50)
position = forms.CharField(max_length=30)
group = forms.ModelChoiceField(queryset=Group.objects.all())