为django表单创建自定义BoundFields列表/字典(模拟Form.hidden_字段)

为django表单创建自定义BoundFields列表/字典(模拟Form.hidden_字段),django,django-templates,django-forms,Django,Django Templates,Django Forms,好的,我有一个有点复杂的表单,有很多复杂的业务逻辑,因此我实际上在创建表单时动态生成字段。我需要能够访问模板中的字段,但当然,因为它们是生成的,所以我不能像{{form.fieldname}}那样做,因为在这种情况下fieldname实际上是由变量生成的 我在表格中尝试了类似的内容: def __init__(self, *args, **kwargs): # initialization code is here, so let's just skip that self.it

好的,我有一个有点复杂的表单,有很多复杂的业务逻辑,因此我实际上在创建表单时动态生成字段。我需要能够访问模板中的字段,但当然,因为它们是生成的,所以我不能像
{{form.fieldname}}
那样做,因为在这种情况下
fieldname
实际上是由变量生成的

我在表格中尝试了类似的内容:

def __init__(self, *args, **kwargs):
    # initialization code is here, so let's just skip that
    self.items = kwargs.pop("items", [])
    self.my_fields = []
    for item in self.items:
        self.fields['item_%d' % item.pk]=forms.CharField(required=True, label=item.name)
        self.my_fields.append(self.fields['item_%d' % item.pk])
但是,在模板中,当我尝试以下操作时:

{% for field in self.my_fields %}
    {{ field }}
{% endfor %}
我得到了类似于

有没有办法做到这一点,以便我可以得到实际的渲染字段

更新
看起来呈现字段的类型为
django.forms.forms.BoundField
,在
字段
对象上调用
\uuuu getitem\uuuuuuu
时创建。基本上,我想我需要一些方法来创建一些行为类似于
隐藏字段的东西。
只包含我的字段。

解决了这个问题。为了确保触发了
\uuuu getitem\uuuu
,我需要如下设置字段:

def __init__(self, *args, **kwargs):
    # initialization code is here, so let's just skip that
    self.items = kwargs.pop("items", [])
    self.my_fields = []
    for item in self.items:
        self.fields['item_%d' % item.pk]=forms.CharField(required=True, label=item.name)
        self.my_fields.append(self['item_%d' % item.pk])