TextField
S
CharField
s,通常只用于存储,
好
文本。是的,有一些特殊的子类要存储,例如JSON对象和IP地址,但通常这只是一个好主意,如果您不必这样做的话。
滤波器
在这些对象的子部分上,或者不必将它们视为单独的子元素。JSON字段也不错,特别是因为它们引入了一个难以在(关系)数据库中表示的动态,但是应该小心地在
关系型
数据库。
这里基本上有两个实体:
Absent
和一个
AbsentDate
还有一个
一对多
关系
缺席的
和
缺席日期
. 我们可以用
ForeignKey
:
class Absent(models.Model):
# ...
pass
class AbsentDate(models.Model):
absent = models.ForeignKey(Absent)
date = models.DateField()
class Meta:
ordering = ['date']
这意味着我们已经构建了如下的东西:
+--------+ 1 N +------------+
| Absent |-------| AbsentDate |
+--------+ +------------+
| date |
+------------+
我们可以确定
缺席的
实例,查询相关的
缺席日期
S与:
our_absent_instance.absentdate_set.all()
所以我们可以在如下模板中使用它:
{% for attend in attends %}
<td>
{% for attenddate in attend.absentdate_set.all %}
{{ attends.attenddate.date }}
{% endfor %}
</td>
{% endfor %}