Python 如何从视图中创建/访问Django中的动态表单字段?
我有一个保存大量记录的系统,需要集成一个组件,该组件将生成任何选定记录的报告 对于用户来说,它是这样的: 单击创建报告 选择要包含在报告中的记录。 点击Submit并显示报告。 我认为: 加载所有记录。 创建一个ReportForm,通过迭代第1部分中的所有记录并使用如下代码生成BooleanField:self.fields['cid_'+strrecord.id]=BooleanField 返回HTML,期待它返回。 迭代以“cid_”开头的所有字段,并创建要包含在报告中的记录ID列表。 将数字传递给报表生成器。 但是在视图中,我无法以我能想象的唯一方式访问表单数据。因为我不知道哪些记录ID可用,因为有些可能已被删除,等等,所以我需要这样访问它: {{form.fields['cid_'+strrecord.id']} 但显然这是非法的Python 如何从视图中创建/访问Django中的动态表单字段?,python,django,forms,dynamic,views,Python,Django,Forms,Dynamic,Views,我有一个保存大量记录的系统,需要集成一个组件,该组件将生成任何选定记录的报告 对于用户来说,它是这样的: 单击创建报告 选择要包含在报告中的记录。 点击Submit并显示报告。 我认为: 加载所有记录。 创建一个ReportForm,通过迭代第1部分中的所有记录并使用如下代码生成BooleanField:self.fields['cid_'+strrecord.id]=BooleanField 返回HTML,期待它返回。 迭代以“cid_”开头的所有字段,并创建要包含在报告中的记录ID列表。 将
有人有什么建议吗?如果我正确理解您的问题,您的答案在于使用正确的Django表单小部件。我给你举个例子。假设您有一个Django模型:-
class Record(models.Model):
name = models.CharField()
假设您为自己的需要创建了一个自定义表单:-
class MyCustomForm(forms.Form):
records= forms.ModelMultipleChoiceField(queryset=Record.objects.all, widget=forms.CheckboxSelectMultiple)
假设您有以下观点:-
def myview(request):
if request.method == 'POST':
form = MyCustomForm(data=request.POST)
if form.is_valid():
#do what you want with your data
print form.cleaned_data['records']
#do what you want with your data
else:
form = MyCustomForm()
return render_to_response('mytemplate.html', {'form': form}, context_instance=RequestContext(request))
您的mytemplate.html可能如下所示:-
<div>
{{ form.records.label_tag }}
{{ form.records }}
</div>
为了确保我理解:所以您想从报告中包含的记录列表中进行选择,但您不能简单地查询这些记录,因为从加载页面到开始报告的时间内,有些记录可能会被删除,等等?您可以轻松创建一个简单表单,该表单将作为复选框列出,例如所有记录。。如果你能准确地告诉我你想要什么,我可能能提供更多的帮助。这正是我想要做的-创建一个表格,将所有记录列为复选框。但我不能只做form.as\p,因为我有我想要使用的特定格式,所以我不知道我可以访问哪些字段。