Ste*_*ger 14 python django django-forms
我有一个ModelForm,它包含一个使用RadioSelect小部件的ModelChoiceField.
class MyAForm(forms.ModelForm):
one_property = models.ModelChoiceField(
widget=forms.RadioSelect,
queryset=MyBModel.objects.filter(visible=True),
empty_label=None)
class Meta:
model = MyAModel
Run Code Online (Sandbox Code Playgroud)
我希望在单选按钮旁边显示MyBModel上的属性.我会覆盖label_from_instance上一个子类ModelChoiceField的,但这并不让我做我想做的,因为我想的单选按钮,显示它针对每个选择项对应的一行内.
所以我的模板中的某个地方我想要...
{% for field in form.visible_fields %}
{% if field.name == "one_property" %}
<table>
{% for choice in field.choices %}
<tr>
<td><input value="{{choice.id}}" type="radio" name="one_property" />{{choice.description}}</td>
<td><img src="{{choice.img_url}}" /></td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
不幸的是,field.choices返回对象的id和标签的元组,而不是查询集中的实例.
是否有一种简单的方法来获取ModelChoiceField的选项实例以在模板中使用?
Ste*_*ger 12
在深入研究ModelChoiceField的django源代码后,我发现它有一个属性"queryset".
我能够使用像...这样的东西
{% for field in form.visible_fields %}
{% if field.name == "one_property" %}
<table>
{% for choice in field.queryset %}
<tr>
<td><input value="{{choice.id}}" type="radio" name="one_property" />{{choice.description}}</td>
<td><img src="{{choice.img_url}}" /></td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)