Изменить начальное значение поля формы в представлениях (Django)

У меня есть три поля формы, которые я хочу изменить / изменить в своих представлениях - функция one_labeling() перед публикацией формы в шаблоне. Первое поле - это метка, где я хочу изменить начальное значение в представлениях. Во-вторых, у меня есть два поля выбора, pos_tag и head_tags, где я использую set_head_tags и set_post_tags в представлениях из MultiplechoiceFields post_tags и head_tags в формах, чтобы опубликовать значение каждого выбранного поля вместо числа, например, "NN" вместо 1. В В тот момент, когда я получаю значение "NN" для ключа 1 из pos_tags в формах, но мне интересно, смогу ли я установить и изменить начальную переменную в представлениях для полей pos_tags и head_tags, как с меткой поля.

in forms.py

class LabelingForm(forms.ModelForm):

    label = forms.CharField(widget=forms.HiddenInput(), initial="trytrytry22",required=False)

      POS_nodes = (('1','NN'),

          ('2','POSS'),
          ....

        )
pos_tags = forms.MultipleChoiceField(choices=POS_nodes, required=False)



Head_node_choices = (('1','NP'),

          ('2','VP'),
          ...


        )


head_tags = forms.MultipleChoiceField(choices=Head_node_choices,required=False)

 class Meta:
        model = OneLabeling
        fields = ('label', 'sentence' )


    def set_head_tags(self, head_tags):
        data = self.data.copy()
        data['head_tags'] = head_tags
        self.data = data

    def set_pos_tags(self, pos_tags):
        data = self.data.copy()
        data['pos_tags'] = pos_tags
        self.data = data

в views.py

def one_labeling(request, postID):
                form = LabelingForm(request.POST) 
                data1 =  form.cleaned_data['pos_tags']
                data2 =  form.cleaned_data['head_tags']
                if form.is_valid():
                 if data1 and data2:
                    l = data1[0]
                    ll = data2[0]
                    pos_tags = dict(form.fields['pos_tags'].choices)
                    head_tags = dict(form.fields['head_tags'].choices)
                    i = pos_tags.get(l)
                    j = head_tags.get(ll)

                    form.set_head_tags(j)
                    form.set_pos_tags(i)


                    post_one_labeling(request, one_labeling)

1 ответ

Решение

Для задания начальных значений для полей с множественным выбором, вы можете попробовать сделать следующее:-

    pos_tags = forms.MultipleChoiceField(choices=POS_nodes,
                     initial=[POS_node[0] for POS_node in POS_nodes])
Другие вопросы по тегам