0
好吧,我有一個複雜的業務邏輯,有很多複雜的形式,因此我實際上是在飛行中生成字段當表單被創建時。我需要能夠訪問模板中的字段,但當然,因爲它們已生成,所以我不能只是執行諸如{{ form.fieldname }}
之類的操作,因爲在這種情況下,fieldname
實際上是由變量生成的。爲django表單創建BoundFields的自定義列表/字典(模擬form.hidden_fields)
我試過的形式是這樣的:
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.fields.CharField object at 0x2b08aeb45810>
是否有方法來做到這一點,所以我可以得到實際渲染的領域?
更新
貌似渲染領域有型django.forms.forms.BoundField
當__getitem__
被稱爲field
對象被創建。基本上,我想我需要一些方法來創建一些行爲像hidden_fields
只包含我的領域。