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 的问题

Django:让 ModelChoiceField 在运行时评估查询集

Django 表单不使用 ModelChoiceField 保存 - ForeignKey

带有modelchoicefield的Django多个表单->查询太多