我有一个使用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选项的实例?

最佳答案

在深入研究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 %}

关于python - 如何在模板中获取ModelChoiceField实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10300685/

10-09 02:47