django ModelChoiceField:如何遍历模板中的实例?
Posted
技术标签:
【中文标题】django ModelChoiceField:如何遍历模板中的实例?【英文标题】:django ModelChoiceField: how to iter through the instances in the template? 【发布时间】:2014-03-28 15:22:11 【问题描述】:我正在尝试访问 ModelChoiceField 的实例,通过显示实例的多个字段以在模板中以我想要的方式呈现它们。
class MyForm(forms.Form):
mychoices = forms.ModelChoiceField(
queryset=ObjectA.objects.all(), widget=forms.Radioselect(), empty_label=None
)
这不起作用:
% for choice in form.mychoices %
choice.pk
% endfor %
我也尝试使用查询集,但它没有呈现任何内容
% for choice in form.mychoices.queryset %
choice.pk
% endfor %
有什么想法吗? 谢谢
【问题讨论】:
【参考方案1】:% for choice in form.mychoices.field.queryset %
choice.pk
% endfor %
注意额外的.field
。第一次遇到它时有点奇怪,但它给了你想要的东西。您还可以访问该对象的 choices
属性,而不是直接访问 queryset,但您需要访问选项的第一个元素来获取实例的 PK,如下所示:
% for choice in form.mychoices.field.choices %
choice.0
% endfor %
【讨论】:
谢谢你的作品。确实,使用 field 属性有点奇怪,我以为已经在场上。 :)以上是关于django ModelChoiceField:如何遍历模板中的实例?的主要内容,如果未能解决你的问题,请参考以下文章
表单 ModelChoiceField 查询集 + 额外选择字段 django 表单
Django - ModelChoiceField 查询集如何工作?
Django:让 ModelChoiceField 在运行时评估查询集