代码之家  ›  专栏  ›  技术社区  ›  Marcin Cylke

在Django中设置radioselect的自定义“name”属性

  •  0
  • Marcin Cylke  · 技术社区  · 15 年前

    我正试图在django表单中设置自定义的“name”属性。

    我一直在尝试这种方法:

    class BaseQuestionForm(forms.Form):
      question_id = forms.CharField(widget=forms.HiddenInput)
      answer = forms.ChoiceField(choices = [ ... ], widget=forms.RadioSelect)
    

    然后设置“名称”-ATTR打开 回答 用:

    form.fields['answer'].widget.name = 'new_name'
    

    但这不起作用,名称总是设置为“answer”,就像字段名一样。有什么办法吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   gruszczy    15 年前

    第一次尝试:

    print form.fields['answer'].widget.name
    

    我相信widget没有名字(好吧,我甚至非常确定;-)。

    要实现你想要的,你必须:

    form.fields['new_name'] = form.fields['answer']
    del form.fields['answer']
    

    然而,这将改变 new_name 如果只使用 {{ form }} 在模板中(此词典已排序)。Django使用键的名称在模板中构建表单字段名称。