首页 > 解决方案 > Django 模型迭代器

问题描述

我有一个关于 Django 模型的非常基本的问题。我有一个临床患者模型(继承自 models.Model),它由字符字段、整数字段、一个文本字段和一个电子邮件字段组成。与这些字段关联的类型仅限于 ASCII 字符(我认为),因此我认为没有必要进行任何低级重新定义不过,假设我有一个 Patient 对象 x。我希望能够遍历该对象中的各个字段并将相应的值打印到模板中。我特别不想像迄今为止所做的那样对值/字段名称进行硬编码,以防模型本身稍后被更改。示例->

{% for value in x %}
<p> {{ value }} </p>
{% endfor %}

我知道,与几乎所有自定义类一样,我必须编写一个__iter __ 方法来详细说明如何遍历这个 Patient 对象。我不知道怎么写这个方法。我不知道我是否还需要写一个 __ next __ 方法。我尝试创建这样的东西时遇到了令人沮丧的,几乎是贬低的错误。请帮忙 :)

标签: pythondjangoclassmagic-methods

解决方案


你只需要编写__iter__方法。在您的情况下,我会编写一个自定义方法来为您执行此操作,而不是修改__iter__魔术方法。将此更改引入您的 django 模型会令人困惑,因为这不是预期的行为。去寻找类似的东西iter_fields()。检查文档以查看如何检索模型字段


推荐阅读