Использование поля динамического выбора в Django

у меня есть choiceField для создания поля select с некоторыми параметрами. Что-то вроде этого:--7-->

forms.py
    class NewForm(forms.Form):
        title = forms.CharField(max_length=69)
        parent = forms.ChoiceField(choices = CHOICE)

но я хочу иметь возможность создавать параметры без предопределенного кортежа (который требуется ChoiceField). В принципе, мне нужен доступ к запросу.пользователь заполняет некоторые теги опций в соответствии с каждым пользователем, но я не знаю, есть ли способ использовать запрос в классах форм.Форма.

альтернативой было бы заполнить экземпляр NewForm via:

views.py
form = NewForm(initial={'choices': my_actual_choices})

но я должен добавить фиктивный выбор для создания NewForm, и my_actual_choices, похоже, не работает.

Я думаю, что третий способ решить эту проблему-создать подкласс ChoiceField и redefined save() но я не уверен,как это сделать.

1 ответов


вы можете заполнить их динамически, переопределив init, в основном код будет выглядеть так:

class NewForm(forms.Form):
    def __init__(self, choices, *args, **kwargs):
        super(NewForm, self).__init__(*args, **kwargs)
        self.fields["choices"] = forms.ChoiceField(choices=choices)

NewForm(my_actual_choices) или NewForm(my_actual_choices, request.POST, request.FILES) etc.