передать несколько параметров для формирования из таблицы html в django

Я новичок в Django, и я застрял, пытаясь передать значение из таблицы html, отображаемой с помощью django-tables2, в форму.

view.py

def configView(request):
    form = ConfigForm(request.POST or none)

    if form.is_valid():
       save_it = form.save(commit=False)
       save_it.save()
       Messages.success(request, 'Configuracion Actualizada')
       return HttpResponseRedirect('/monitor/')

    return render_to_response("config.html",
                              locals(),
                              context_instance=RequestContext(request))

Это мои формы.py

class ConfigForm(forms.ModelForm):
    class Meta:
       model = Config

    def __init__(self, *args, **kwargs):
        super(ConfigForm, self).__init__(*args,**kwargs)
        self.fields['id_proveedor'].initial = kwargs.pop('id_proveedor',None)

Но я не знаю, как получить и передать значение в форму. Мне нужно передать значения из ячеек 0, 2 и 6.

Любой совет или фрагмент будут оценены.

заранее спасибо


person Joseleg    schedule 08.09.2014    source источник
comment
Вам нужно будет добавить свой шаблон, но вы не можете просто отправить таблицу в форму. Вам нужно будет создать скрытые входы и заполнить их значениями в ячейках.   -  person schillingt    schedule 09.09.2014


Ответы (1)


Я бы попробовал это:

класс ConfigForm(forms.Form):

def __init__(self, *args, **kwargs):
    your_variable_to_pass = kwargs.pop("your_variable_to_pass")
    super(ConfigForm, self).__init__(*args,**kwargs)
    self.fields['id_proveedor']= forms.FieldClass(attribute=your_variable_to_pass)

id_proveedor = FieldClass()

где «FieldClass» — это любое выбранное вами поле (т. е. ChoiceField, CharField), а атрибут — это атрибут для передачи (ваша переменная), т. е. «выборы», «начальные» и т. д. Таким образом, это может выглядеть так: self.fields[ 'id_proveedor']= forms.ChoiceField(choices=your_variable_to_pass)

id_proveedor = Поле выбора ()

Обратите внимание на отступ - вы присваиваете значение атрибута для передачи в конструктор!; в случае выбора ChoiceField это список кортежей, т.е. (('1', 'Первый',), ('2', 'Второй',)); В этом примере я использую Forms вместо ModelForm как супер или базовый класс.

Затем в представлениях: f = ConfigFrom(request.POST, your_variable_to_pass=your_variable_to_pass)

обратите внимание на your_variable_to_pass=your_variable_to_pass, иначе будет выдана ошибка ключа

Я надеюсь, что это помогает!

person Leo Skhrnkv    schedule 09.09.2014
comment
Спасибо за ответ, Лео, но я смущен тем, как получить значения из таблицы html и передать их в форму. Я хочу передать значения из ячеек 0 и 3 из выбранной строки - person Joseleg; 09.09.2014