【问题标题】:pass multiple parameters to form from html table in django从 django 中的 html 表传递多个参数以形成表单
【发布时间】:2014-09-08 22:13:53
【问题描述】:

我是 Django 的新手,试图将使用 django-tables2 呈现的 html 表中的值传递给表单时遇到了困难。

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))

这是我的forms.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 中的值。

任何建议或 sn-p 将不胜感激。

提前致谢

【问题讨论】:

  • 您需要添加模板,但不能只将表格提交到表单中。您必须创建隐藏输入并使用单元格中的值填充它们。

标签: django django-forms django-tables2


【解决方案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()

注意缩进——你指定属性的值传递给构造函数!;在 ChoiceField 的情况下,选择是一个元组列表,即 (('1', 'First',), ('2', 'Second',));在此示例中,我使用 Forms 而不是 ModelForm 作为超类或基类

然后,在视图中:f = ConfigFrom(request.POST, your_variable_to_pass=your_variable_to_pass)

注意 your_variable_to_pass=your_variable_to_pass 否则会产生密钥错误

希望对你有帮助!

【讨论】:

  • 感谢 Leo 的回复,但我很困惑的是如何从 html 表中获取值并将其传递给表单。我想传递所选行中单元格 0 和 3 中的值
猜你喜欢
  • 2019-10-28
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多