从Django视图中的模型重新组合数据
我有一个包含如下数据的模型:从Django视图中的模型重新组合数据,django,Django,我有一个包含如下数据的模型: Name Value Date pop1 15 2021-01-19 pup1 2 2021-01-18 pep1 25 2021-01-18 pop2 9 2021-01-17 pap1 1 2021-01-16 pep2 26 2021-01-16 pep3 4 2021-01-16 如果我执行data=myMode
Name Value Date
pop1 15 2021-01-19
pup1 2 2021-01-18
pep1 25 2021-01-18
pop2 9 2021-01-17
pap1 1 2021-01-16
pep2 26 2021-01-16
pep3 4 2021-01-16
如果我执行data=myModel.objects.all()
操作,我将获得正常结构中的所有数据,但我希望获得按日期分组的数据。这一目标能否直接实现
我问这个问题是因为我知道如何使用myModel.objects.filter()
进行过滤,或者使用myModel.objects.order\u by()
对数据进行排序。然后,存在类似于myModel.objects.regroup('date')
编辑:
所需的输出类似于:
date:2021-01-19 >> [[name:pop1, value:15]]
date:2021-01-19 >> [[name:pup1, value:2],[name:pep1, value:25]]
date:2021-01-17 >> [[name:pop2, value:9]]
date:2021-01-16 >> [[name:pap1, value:1],[name:pep2, value:26],[name:pep3, value:4]]
基本上是一个按日期重新组合数据的对象
非常感谢。您可以使用:
data=myModel.objects.all()
new_data={}
for e in data :
if e.value('date') not in new_data :
new_data[e.value('date')]=[e]
else :
new_data[e.value('date')].append(e)
print(new_data)
根据对的已接受答案和对的已接受答案,您应该能够改变您的观点,如下所示:
dates_list = MyModel.objects.values_list(
'date', flat=True
).distinct()
group_by_date = {}
for date in dates_list:
group_by_date[date] = MyModel.objects.filter(date=date)
然后在模板中:
{% for date, items in group_by_date %}
date: {{ date }} >>
{% for item in items %}
[ name: {{ item.name }}, value: {{ item.value }} ]
{% endfor %}
<br />
{% endfor %
{%表示日期,组中的项目按日期%}
日期:{{date}}>>
{items%%中的项的%s}
[名称:{{item.name},值:{{item.value}]
{%endfor%}
{%endfor%
(显然,您希望使用更多的HTML标记以更令人愉快的方式格式化输出!)请您解释一下所需的输出是什么?是否要按日期将“值”列分组?使用所需的输出编辑!:)您可以使用myModel.objects.all()然后处理您dict tp获取所需的输出这是否回答了您的问题?我昨天尝试了此操作,但出现以下错误
TypeError:“myModel”对象不可下标。您可以尝试我的最新修改吗最后,我在循环之前序列化了模型中的数据