在Django中为RadioSelect设置自定义'name'属性
我想在Django表单中设置自定义的'name'属性。
我尝试了这种方法:
class BaseQuestionForm(forms.Form):
question_id = forms.CharField(widget=forms.HiddenInput)
answer = forms.ChoiceField(choices = [ ... ], widget=forms.RadioSelect)
然后我用下面的代码来设置answer的'name'属性:
form.fields['answer'].widget.name = 'new_name'
但是这样不行,'name'属性总是被设置为'answer',也就是字段的名字。有没有什么办法可以做到这一点呢?
1 个回答
1
第一次尝试:
print form.fields['answer'].widget.name
我觉得这个小部件是没有名字的(其实我很确定这一点;-)。
要实现你想要的效果,你需要:
form.fields['new_name'] = form.fields['answer']
del form.fields['answer']
不过,如果你在模板中简单地使用 {{ form }}
,这样会把 new_name
字段放到所有字段的最后面(因为这个字典是有顺序的)。Django 在模板中生成表单字段的名字时,是根据字典的键来决定的。