将数据绑定到django表单ChoiceField';s渲染选项

将数据绑定到django表单ChoiceField';s渲染选项,django,django-templates,django-forms,Django,Django Templates,Django Forms,我有一个带有特殊字段的表单(由表单工厂生成) def MyFormGenerator(data): CHOICES = <created_using_data_value> class MyForm(form.Form): myfield = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect) return MyForm def MyFormGenerator(数据): 选

我有一个带有特殊字段的表单(由表单工厂生成)

def MyFormGenerator(data):
    CHOICES = <created_using_data_value>
    class MyForm(form.Form):
        myfield = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect)
    return MyForm
def MyFormGenerator(数据):
选择=
类MyForm(form.form):
myfield=forms.ChoiceField(选项=choices,小部件=forms.RadioSelect)
返回我的表格
我需要做的是将一些python变量绑定到每个选项,以便模板可以在渲染时使用它们(每个选项都将在一个div中列出,其中包含关于该选项的详细信息)

我可以想出两种方法来做到这一点。(#出于灵活性考虑,首选1) 1) 为模板提供一个单独的字段列表(包含数据),并让模板根据需要抓取和渲染每个字段。 2) 将数据绑定到字段,以便模板可以在迭代时获取并使用它

我几乎可以做#1(在模板中手动创建输入字段),但我不知道如何使用变量按名称调用字段选择,因为很难知道当#some#u field#是模板变量时,什么不起作用

现在,我在模板中从头开始重新创建字段(重新创建选项值等),但这远远不够理想。

看看表单

它允许您使用另一个模型的查询集作为选择字段。如果你的选择中有这么多的数据,他们最好还是有自己的模型。 假设有某种方式可以查询您想要显示的结果,即使您为它们分配了一个integerfield作为公共分组,也可以这样做。最糟糕的情况是,您只有一些巨大的查询(在代码长度上)和许多排除、过滤器等

field1 = forms.MultipleModelChoiceField(queryset=MyModel.objects.filter(method="UPS"), empty_label="(None)")

默认情况下,它使用SelectMultiple小部件,但可以使用kwarg覆盖它

我发现最简单的方法是将数据附加到视图中,而不是附加到选项字段本身

例如,如果您有一个列表
choices\u data
与您的选择长度相同,并且您希望将每个数据段绑定到相应的选择,则可以执行以下操作

def my_view(request):
    form = MyForm()
    myfield_choices = zip(form['myfield'], choices_data)
    ...
然后,您可以像这样在模板中循环选择:

{% for choice, data in myfield_choices %}
    ...
{% endfor %}

你能澄清你所说的字段数据是什么意思吗?在模型上?还是上一页表格里的东西?你能发布你当前的表单或模型吗?对不起,我的措辞有点错误,我实际上需要一个选项(单选按钮)字段的每个选项的数据。字段if用于选择运输方式(地面、usps等),我需要将一些数据附加到模板可以使用的每个选项。数据将由一个值字典组成,如预期到达日期、成本、描述等。这将起作用,但选项不是特定于一个表。该网站使用一个插件系统(带有一个注册模块,用于注册一个类的应用程序),你可以从任何一个插件提供的各种选项中选择一个选项。这是一种航运选择,有多种航运模式(统一费率、加拿大邮政、美国邮政等),每种模式都有不同的选择(10天统一费率、次日统一费率、加拿大邮政加急等)。用户需要从所有可用选项中选择一个选项。