python - Django 模型迭代器
问题描述
我有一个关于 Django 模型的非常基本的问题。我有一个临床患者模型(继承自 models.Model),它由字符字段、整数字段、一个文本字段和一个电子邮件字段组成。与这些字段关联的类型仅限于 ASCII 字符(我认为),因此我认为没有必要进行任何低级重新定义。不过,假设我有一个 Patient 对象 x。我希望能够遍历该对象中的各个字段并将相应的值打印到模板中。我特别不想像迄今为止所做的那样对值/字段名称进行硬编码,以防模型本身稍后被更改。示例->
{% for value in x %}
<p> {{ value }} </p>
{% endfor %}
我知道,与几乎所有自定义类一样,我必须编写一个__iter __ 方法来详细说明如何遍历这个 Patient 对象。我不知道怎么写这个方法。我不知道我是否还需要写一个 __ next __ 方法。我尝试创建这样的东西时遇到了令人沮丧的,几乎是贬低的错误。请帮忙 :)
解决方案
你只需要编写__iter__
方法。在您的情况下,我会编写一个自定义方法来为您执行此操作,而不是修改__iter__
魔术方法。将此更改引入您的 django 模型会令人困惑,因为这不是预期的行为。去寻找类似的东西iter_fields()
。检查此文档以查看如何检索模型字段
推荐阅读
- postgresql - 使用连续存档备份恢复 postgres
- node.js - 在 Dialogflow 中存储用户位置首选项
- hybris - 如何从 Hybris 中的 URL 中删除基础站点 id/上下文根
- java - Java 性能:私有静态最终字符串与本地字符串?在堆空间中创建的对象数
- xamarin - Xamarin 标签在 Mvvm listview 中初始后未更新
- r - 将M5与caret包的train函数一起使用时如何提取线性模型回归系数?
- javascript - Iphone 中的图像旋转问题(croppie)
- javascript - 如何使用可排序的 jquery-ui 功能同时从两个表中拖放行进行排序?
- orchardcms - 重新初始化 Orchard Core 数据库
- python - SeleniumLib 扩展引发重复的关键字名称错误