Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » как передать начальные значения в форму Джанго? [RSS Feed]

#1 Июль 12, 2020 18:51:51

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

как передать начальные значения в форму Джанго?

Собственно говоря мне нужно или передать начальное значение во второе поле формы 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)
то есть передаю в форму начальное значение ‘filter_label’:“AF737”

это файл forms.py
 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,  )

мне его нужно передать как HiddenInput()). Пробовал как CharField() - значение передается и отображается в форме. Пробовал и как HiddenInput()) - сейчас закомментировано, значение нигде не смог увидеть. В обоих случаях значение переменной “AF737” не передается дальше в последующий кверисет
  d_choice = afc_select_druckstufe.objects.filter(series__valuefg__exact=filter_label)
и соответственно дальнейший druckstufe = forms.ChoiceField(… не работает.
А когда в кверисете явно указываю значение переменной, то всё работает.
 d_choice = afc_select_druckstufe.objects.filter(series__valuefg__exact="AF737")
Как правильно сделать?
Спасибо

Отредактировано gtlhbkkj (Июль 12, 2020 22:42:33)

Офлайн

#2 Июль 13, 2020 14:18:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как передать начальные значения в форму Джанго?

gtlhbkkj
Скажите, пожалуйста, а вы отдаете себе отчет в том, что d_choice это атрибут класса, и поэтому будет получать значение во время импорта модуля, а не создания объекта?



Офлайн

#3 Июль 13, 2020 15:28:26

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

как передать начальные значения в форму Джанго?

FishHook
gtlhbkkjСкажите, пожалуйста, а вы отдаете себе отчет в том, что d_choice это атрибут класса, и поэтому будет получать значение во время импорта модуля, а не создания объекта?

как вы правильно заметили, я действительно не отдаю себе в этом отчет, ибо почти не понимаю классы.
После вашего комментария в копилку знаний кое-что добавилось.
Правильно ли я вас понял, что тогда единственный способ остается - это сгенерировать список во вьюхе и передать его из вьюхи в форму?
примерно вот так?

———– views.py ———–
     ...
    ... генерировать список list1
    form1 = KSS_Form1(initial={'d_choice':list1})
    context = {'form':form1, **context}
return render(request, 'af/size/01_kss_size2.html', context)
.

——- forms.py ———–
 class KSS_Form1(forms.Form):
    druckstufe = forms.ChoiceField(\
            required=True, \
            label=_("Specify desired pressure stage:"), \
            choices = d_choice,  )

так я тоже пробовал, не получается.
подозреваю что мой код в форме неправильный и из него надо полностью убрать “choices = d_choice,”

Как должен выглядеть код в форме - описание поля forms.ChoiceField ?
спасибо

P.S. буду признателен, если вы не только ответите на мой вопрос, но и дадите линк на обьяснение что такое классы для чайников.

Отредактировано gtlhbkkj (Июль 13, 2020 16:19:25)

Офлайн

#4 Июль 13, 2020 21:24:20

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

как передать начальные значения в форму Джанго?

Благодарю всех кто помог
решение вот такое

         form1 = KSS_Form1()
        # этой строки мне не хватало
        form1.fields['druckstufe'].choices = list1
        context = {'form':form1, **context}
    return render(request, 'af/size/01_kss_size2.html', context)

Офлайн

  • Начало
  • » Django
  • » как передать начальные значения в форму Джанго?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version