将单选按钮与Django中的表行相关联

时间:2015-08-20 17:49:43

标签: python django django-forms django-views

我正在使用django创建一个网站。我有一个pandas数据框,我使用pandas views.pyDataFrame.to_html()转换为html表。我希望能够为表的每一行添加一个单选按钮,以便用户可以选择要用于进一步处理的数据帧的哪一行。我在django中有一个单选按钮表单,但我不确定如何将它应用到表中。

表格如下:

class RadioSelectForm(forms.Form):
  def __init__(self,*args,**kwargs):
    arg_list = kwargs.pop('arg_list')
    section_label = kwargs.pop('section_label')
    required_val = kwargs.pop('required_val')

    super(RadioSelectForm,self).__init__(*args,**kwargs)
    self.fields['choice'].choices = arg_list
    self.fields['choice'].label = section_label
    self.fields['choice'].required = required_val

  choice = forms.ChoiceField(widget=forms.RadioSelect())

html模板如下所示:

<div class="panel panel-body">
  <div class="panel-title text-center">
    <div class="table-responsive">
      {{ table1 | safe }}
    </div>
  </div>
</div>

views.py表生成看起来像这样(想在此表的每一行添加单选按钮):

dumy_df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))  #just a placeholder dataframe for this question
html_df = dumy_df.to_html(classes="table table-hover")
template_dict = {'table1':html_df}

return render(request,'DjangoTemplateName.html',template_dict)

有没有人知道你是否可以将单选按钮与Django中的表中的行相关联?

1 个答案:

答案 0 :(得分:1)

Pandas有一个insert函数,可用于向生成的表中添加列。我不知道您使用什么来识别您的各行,但是我们说我们使用A列中的值,您可以浏览行。

radio = [] # empty array to push the rows of input tags 
for val in dumy_df.['A']:
    radio.append('<input type="radio" value="{}">'.format(val))

所以你可以尝试dumy_df.insert(0, 'E', radio , allow_duplicates=True)

0,作为位置,无线电是单选按钮的html,如

然后你可以将整个表包装在表单标签中。

<form action="/some_link/" method="post">
  <div class="table-responsive">
     {{ table1 | safe }}
   </div>
</form>

我还没有完全尝试过这个问题,但是这些方面可能会有所作为。

Edit2 :好的,见上文。