在Django中为RadioSelect设置自定义'name'属性

0 投票
1 回答
1100 浏览
提问于 2025-04-16 01:55

我想在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 在模板中生成表单字段的名字时,是根据字典的键来决定的。

撰写回答