对于这样一个蹩脚的问题,我很抱歉,但我无法为ModelForm中的字段设置初始值。看起来像这样:
class OrderRegisterForm(forms.ModelForm):
class Meta:
model = Order
widgets = {
'weight_units': forms.RadioSelect,
}
在模型中:
^{pr2}$但是我试着用这样的模板来呈现它
<ul class="form__row__list">
{{ order_form.weight_units }}
</ul>
出现正确的值,但未选中具有默认值的单选按钮。我试图传递一个初始参数,重写表单中的__init__
等等,但仍然没有任何效果。在
更新
因为_p()提供了正确的结果。事情越来越奇怪了。在
<p>
<label for="id_weight_units_0">Weight units:</label>
<ul id="id_weight_units">
<li>
<label for="id_weight_units_0"><input checked="checked" id="id_weight_units_0" name="weight_units" type="radio" value="KG" /> kg</label>
</li>
<li>
<label for="id_weight_units_1"><input id="id_weight_units_1" name="weight_units" type="radio" value="TN" /> t</label>
</li>
</ul>
请告诉我我的错误。在
根据这个问题:default value for django choice field
您必须执行以下操作: https://stackoverflow.com/a/22257696/659900
使用默认属性:
或者
^{pr2}$*更新*
我已经拿走了你的代码,并试图重现你的错误。但不幸的是,你的代码确实有效。在
这就是我所做的
在模型.py在
在表单.py在
我使用shell查看生成了什么HTML:
这给了我以下输出(为了清晰起见,格式化):
我特意将默认值设置为“TN”,以确保django不会意外地使用第一个元素。请参见
checked="checked"
属性,Django确实使用了正确的默认值。你有没有一些有趣的Javascript可能会改变你的输出?在那么您能提供.as_p()方法的输出吗?在
这可能会澄清很多事情。在
所以,我找到了解决办法。问题是我要过去了请求.GET它似乎完全重写了字段的初始值。所以,如果你这么做
发生了上述问题。为了避免这种情况,可能的正确代码是:
^{pr2}$相关问题 更多 >
编程相关推荐