Как сделать динамические поля выбора на основе моделей в формах 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())
Вернуться на верх