【问题标题】:Django RadioSelect Widget not iterating correctlyDjango RadioSelect 小部件未正确迭代
【发布时间】:2014-05-12 01:54:42
【问题描述】:

我正在尝试遍历 ChoiceField 并在我的模板中分别显示单选按钮。但是,当我使用通过 for 循环运行字段的标准方法时,我的非属性会呈现任何内容。

这是我表单中的一个 sn-p

class ResponseForm(forms.Form):
    CHOICES = (('1', 'First',), ('2', 'Second',))
    suggestions = forms.ChoiceField(required=True, widget=forms.RadioSelect(), choices=CHOICES)

模板中的片段

{% for radio in response_form.suggestions %}
    {{ radio.id_for_label }} {{ radio.choice_label }} {{ radio.tag }}
{% endfor %}

这就是在 for 循环期间 radio 变量在调试器中的样子。

http://i.stack.imgur.com/lyCE6.png

我们正在运行 Django 1.5,所以应该支持它。无法从文档/其他答案中解决这个问题,我不确定什么会干扰这个。

编辑:

默认的 RadioSelect 小部件被 floppyforms 模块覆盖,这似乎不能以这种方式迭代(这很有意义)。

【问题讨论】:

  • 我刚刚意识到我们正在使用 floppyforms 来替换默认小部件,这似乎是该行为的嫌疑人。

标签: python django django-forms


【解决方案1】:

我在没有 floppyform 的情况下工作,并且在我的项目中正确呈现了相同的代码。建议你重点覆盖RadioSelect,或许你可以使用widget=forms.RadioSelect(renderer=CustomRenderer)实现同样的功能,并保留默认的RadioSelect Widget。

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 2020-12-02
    • 2012-07-18
    • 2020-12-04
    • 1970-01-01
    • 2018-07-19
    • 2020-07-24
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多