【发布时间】:2021-10-24 03:25:31
【问题描述】:
我在 Django views.py 中有一个数组,我想将它发送到 HTML 并显示一个饼图,但是 失败了,我尝试了很多其他方法并阅读了很多教程,在大多数情况下,他们有 模型中存储一些数字的字段,它们会显示这些数字。就我而言,我需要 计算处于不同状态的任务的小计。我不确定如何输出这些 如果有任何建议,请使用适当的标签或任何其他饼图将数据发送到 chart.js?
views.py
def visualisation(request, project_id):
project = Project.objects.get(id=project_id)
counts_data = Todo.objects.aggregate(
to_do_count=Count('id', filter=Q(status='to_do')),
in_progress_count=Count('id', filter=Q(status='in_progress')),
done_count=Count('id', filter=Q(status='done'))
)
return render(request, 'todo_lists/progress.html', {"counts_data": counts_data})
html
<script>
$(document).ready(function() {
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: [1,2,3],
datasets: [{
label: '# of Votes',
data:{{counts_data}},
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)'
],
borderWidth: 1
}]
},
options: {
responsive:false
}
});
});
</script>
【问题讨论】:
-
只需创建一个对象以将数组存储在javascript中:
var obj = {{counts_data}};。并使用该对象的值创建饼图。 -
@AjayLingayat 感谢您的帮助,我试过了,但还是不行,还有其他想法吗?
-
@NikiGrey 请在
data:{{counts_data}}行显示渲染数据。
标签: javascript python django