【问题标题】:How can I get an option selected by default in a forms.ChoiceField in Django?如何在 Django 的 forms.ChoiceField 中默认选择一个选项?
【发布时间】:2020-09-17 16:30:26
【问题描述】:

我有这样的事情:

class MyForm(forms.Form):

    CHOICES = (
        ('opt1', 'Opt1'),
        ('group',(
            ('opt2', 'Opt2'),
            ('opt3', 'Opt3'),
            )
        ),
    )   
    
    myfield = forms.ChoiceField(choices=CHOICES, required=False)

当我渲染这个表单时,默认选择opt1,但我需要选择opt3。

我试过类似的东西:

myfield = forms.ChoiceField(choices=CHOICES, required=False, initial="opt3")

但它没有工作。

我得到了什么:

<select name="myfield" id="id_myfield">
    <option value="opt1">Opt1</option>
    <optgroup label="group">
        <option value="opt2">Opt2</option>
        <option value="opt3">Opt3</option>
    </optgroup>
</select>

我想得到什么:

<select name="myfield" id="id_myfield">
    <option value="opt1">Opt1</option>
    <optgroup label="group">
        <option value="opt2">Opt2</option>
        <option value="opt3" selected>Opt3</option>
    </optgroup>
</select>

如何让 opt3 默认被选中?

【问题讨论】:

  • 现在它可以工作了,之前它没有工作,因为在我看来,我有 MyForm(request.GET) 来完成用户填写的数据。然后忽略初始数据。我使用 if 语句来请求 request.GET,然后根据情况使用 MyForm(request.GET) 或 MyForm()。

标签: django forms


【解决方案1】:

它的工作

myfield = forms.ChoiceField(choices=CHOICES, required=False, initial="opt3`")

我的问题是我的观点:

form = MyForm(request.GET)

现在我解决了这个问题:

if request.GET:
    form = MyForm(request.GET)
else:
    form = MyForm()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多