Форум сайта python.su
Собственно говоря мне нужно или передать начальное значение во второе поле формы ChoiceField или же передать в эту форму переменную (в данном случае {'filter_label':“AF737”}, при помощи которой я мог бы сгенерировать список для ChoiceField.
Делаю вот так во вьюхе
... form1 = KSS_Form1(initial={'filter_label':"AF737"}) context = {'form':form1, **context} return render(request, 'af/size/01_kss_size2.html', context)
class KSS_Form1(forms.Form): # filter_label = forms.CharField(widget=forms.HiddenInput()) filter_label = forms.CharField() d_choice = afc_select_druckstufe.objects.filter(series__valuefg__exact=filter_label) list1 = [] for i in d_choice: x = (i.druckstufe.value, i.druckstufe.descr) list1.append(x) druckstufe = forms.ChoiceField(\ required=True, \ label=_("Specify desired presure stage:"), \ choices = list1, )
d_choice = afc_select_druckstufe.objects.filter(series__valuefg__exact=filter_label)
d_choice = afc_select_druckstufe.objects.filter(series__valuefg__exact="AF737")
Отредактировано gtlhbkkj (Июль 12, 2020 22:42:33)
Офлайн
gtlhbkkj
Скажите, пожалуйста, а вы отдаете себе отчет в том, что d_choice это атрибут класса, и поэтому будет получать значение во время импорта модуля, а не создания объекта?
Офлайн
FishHook
gtlhbkkjСкажите, пожалуйста, а вы отдаете себе отчет в том, что d_choice это атрибут класса, и поэтому будет получать значение во время импорта модуля, а не создания объекта?
... ... генерировать список list1 form1 = KSS_Form1(initial={'d_choice':list1}) context = {'form':form1, **context} return render(request, 'af/size/01_kss_size2.html', context)
class KSS_Form1(forms.Form): druckstufe = forms.ChoiceField(\ required=True, \ label=_("Specify desired pressure stage:"), \ choices = d_choice, )
Отредактировано gtlhbkkj (Июль 13, 2020 16:19:25)
Офлайн
Благодарю всех кто помог
решение вот такое
form1 = KSS_Form1() # этой строки мне не хватало form1.fields['druckstufe'].choices = list1 context = {'form':form1, **context} return render(request, 'af/size/01_kss_size2.html', context)
Офлайн