【问题标题】:Template rendering issue with RadioSelect() widget in DjangoDjango 中 RadioSelect() 小部件的模板渲染问题
【发布时间】:2011-03-20 10:38:17
【问题描述】:

我正在尝试使用 django 中提供的 RadioSelect() 小部件来呈现(默认)单选按钮,但每当我使用它时,输出都是空白的。但是,如果我让 django 表单加载默认渲染器,那么它会打印出一个带有选项的下拉框。我在这里粘贴我为此编写的代码摘要。

# In models.py

AUDIO_SETTING_CHOICES = (
                      ('RESTART', 'Play audio from the beginning.'),
                      ('CONTINUE', 'Continue playing previous audio (if same).'),
    )

audio_setting = models.CharField(max_length=20, choices=AUDIO_SETTING_CHOICES, default='RESTART')

# In forms.py

class ChapterItemForm(forms.ModelForm):
    def __init__(self, user=None, *args, **kwargs):
        self.user = user
        super(ChapterItemForm, self).__init__(*args, **kwargs)

        self.fields['audio_setting'] = forms.ChoiceField(label="How to play the audio?",
                                                         widget=forms.RadioSelect())

# In template
<Form>
...
audio setting: {{ form.audio_setting }} <br /> 
...

所以任何关于我可能做错了什么的指针?

【问题讨论】:

    标签: django django-forms radio-button


    【解决方案1】:

    http://docs.djangoproject.com/en/dev/ref/forms/fields/#choicefield

    您没有将任何选择传递给 ChoiceField

    self.fields['audio_setting'] = forms.ChoiceField(
        choices=AUDIO_SETTING_CHOICES, label="How to play the audio?", 
        widget=forms.RadioSelect())
    

    【讨论】:

    • @Chantz 对不起,你的权利,那是 CharField。选择第一个选项
    • 还有其他方法可以为无线电场建模吗?
    • @Chantz 我相信你的实现是正确的。尽管也可以使用self.fields['foo'].choices = [ iterable ].widget = 来设置选项。这并不是获取 radioselect 小部件的更好方法。
    猜你喜欢
    • 2012-08-24
    • 2012-08-06
    • 2011-06-28
    • 2016-07-21
    • 1970-01-01
    • 2020-02-28
    • 2013-02-25
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多