RadioSelect ウィジェットを使用して ModelChoiceField を含む ModelForm があります。
class MyAForm(forms.ModelForm):
one_property = models.ModelChoiceField(
widget=forms.RadioSelect,
queryset=MyBModel.objects.filter(visible=True),
empty_label=None)
class Meta:
model = MyAModel
ラジオ ボタンの横に表示したい MyBModel の属性があります。ModelChoiceField のサブクラスをオーバーライドlabel_from_instance
しますが、各選択項目の行を持つテーブル内にラジオ ボタンを表示したいので、これではやりたいことができません。
だから、私のテンプレートのどこかで、次のようなものが欲しい...
{% 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 %}
残念ながら、field.choices はクエリセットからのインスタンスではなく、オブジェクトの ID とラベルのタプルを返します。
テンプレート内で使用する ModelChoiceField の選択肢のインスタンスを取得する簡単な方法はありますか?