[英]Django ListData on DetailView from Array
這是我的models.py
class Absent(models.Model):
...
ListOfDate = models.TextField(blank=True, null=True, default='Nothing')
...
在我的情況下, ListOfDate
數據將如下所示:
[datetime.date(2018, 4, 18),
datetime.date(2018, 5, 15),
datetime.date(2018, 5, 16),
datetime.date(2018, 5, 17)]
我使用ListOfDate.append(value)
填充ListOfData
。
這是我的views.py
class Attend(DetailView):
context_object_name = 'attends'
model = models.Attend
在ListView
常用
{% for attend in attends %}
<td>{{ attends.ListOfDate }}</td>
{% endfor %}
用於顯示數據列表。 但將全部集中在一欄中。 像這樣:
[datetime.date(2018, 4, 18),
datetime.date(2018, 5, 15),
datetime.date(2018, 5, 16),
datetime.date(2018, 5, 17)]
在我的情況下,我ListOfDate
上面一樣列出ListOfDate
,但不在一欄中列出。 像這樣:
+-----+--------------------------------+
| # | Date |
+-----+--------------------------------+
| 1 | [datetime.date(2018, 4, 18), |
| | datetime.date(2018, 5, 15), |
| | datetime.date(2018, 5, 16), |
| | datetime.date(2018, 5, 17)] |
+-----+--------------------------------+
|
|
v
+-----+----------------+
| # | Date |
+-----+----------------+
| 1 | 2018-4-18 |
+-----+----------------+
| 2 | 2018-5-15 |
+-----+----------------+
| 3 | 2018-5-16 |
+-----+----------------+
| 4 | 2018-5-17 |
+-----+----------------+
TextField
S, CharField
S,通常僅用於存儲, 以及文本。 是的,有一些特殊的子類可以存儲,例如JSON對象和IP地址,但是通常,如果您不必篩選這些對象的子部分,或者不必將它們視為單獨的子元素,則通常這是一個好主意。 JSON字段還不錯,特別是因為它們引入了某種很難在(關系)數據庫中表示的動態特性,但是人們應該在關系數據庫中謹慎使用它們。
在這里,您基本上有兩個實體: Absent
和AbsentDate
,並且這是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 |
+------------+
然后,對於某個Absent
實例,我們可以使用以下命令查詢相關的AbsentDate
集合:
our_absent_instance.absentdate_set.all()
因此,我們可以在類似以下的模板中使用它:
{% for attend in attends %}
<td>
{% for attenddate in attend.absentdate_set.all %}
{{ attends.attenddate.date }}
{% endfor %}
</td>
{% endfor %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.