我正在使用django创建一个网站。我有一个pandas数据框,我使用pandas views.py
在DataFrame.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中的表中的行相关联?
答案 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 :好的,见上文。