Передача значений из представлений django в формы django

Я пытаюсь передать значение из views.py в forms.py в django

views.py:

def pods(request):
    clusterName = request.GET.get('data') ----> this is the value I want to pass to forms
    return render(request,'pods.html',{"nodeForm":forms.getPodsOnNodes()})

forms.py:

class getPodsOnNodes(forms.Form):   
    nodeName = forms.ChoiceField(label='Node Name',choices=functions.choiceMaker(functions.nodesList(**this is where I want to use clusterName from views**)))

Не могли бы вы сообщить мне, как я могу это сделать?

Рассматривается возможность получения данных из post запроса, передавая их в html

form = getPodsOnNodes(request.POST)
if form.is_valid():
    clusterName = request.POST["data"]
    return render(request, 'pods.html', context={'nodeForm': form, 'variable_name': clusterName})

Вы можете передавать переменные в форму из представления, вызывая форму с kwargs :

def pods(request):
    clusterName = request.GET.get('data') ----> this is the value I want to pass to forms
    return render(request,'pods.html',{"nodeForm":forms.getPodsOnNodes(clusterName)})

В вашей форме вы должны получить значение вашего kwarg в вашем методе __init__ ( перед унаследованным методом , иначе вы получите ошибку из-за неопределенного kwarg). Однако затем вам нужно будет определить ваше поле внутри метода __init__, так как в противном случае ваша переменная nodeName не будет определена.

Таким образом, класс вашей формы станет таким:

class getPodsOnNodes(forms.Form):

    def __init__(self, *args, **kwargs):
        nodeName = kwargs.pop('nodeName')
        super().__init__(*args, **kwargs)

        self.fields['nodeName'] = forms.ChoiceField(label='Node Name',choices=functions.choiceMaker(functions.nodesList(nodeName)))
Вернуться на верх