以下是我的代码我想通过ajax获取到数据库里面的数据,并在饼状图里面实现,我该如何实现?
后端代码
def chart_pie(request):
"""构造饼图"""
db_data_list = [
{"value": 1048, "name": 'IT部门'},
{"value": 735, "name": '美工部门'},
{"value": 580, "name": '运营部门'},
{"value": 484, "name": '财政部门'},
{"value": 300, "name": '数据库部门'}
]
result = {
"status": True,
"data": db_data_list
}
return JsonResponse(result)
前端代码
<script type="text/javascript">
$(function(){
initPie();
})
function initPie() {
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('m3'));
var option = {
title: {
text: '财政支出占比信息',
subtext: '第一季度',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
bottom:0
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '50%',
data: [], //后台获取
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
$.ajax({
url:"/chart/pie/",
type:"get",
dataType:"json",
success: function(res){
if (res.status){
option.series[0].data=res.data,
myChart.setOption(option)}}})
myChart.setOption(option);
}
数据库代码
class Order(models.Model):
oid = models.CharField(verbose_name="订单号", max_length=64)
title = models.CharField(verbose_name="名称", max_length=32)
price = models.FloatField(verbose_name="价格")
status_choice = (
(1, "未支付"),
(2, "已支付")
)
status = models.SmallIntegerField(verbose_name="状态", choices=status_choice, default=1)
admin = models.ForeignKey(verbose_name="管理员", to="admin", on_delete=models.CASCADE)
mysql> select * from app01_order;
+----+--------------+-----------------+-------+--------+----------+
| id | oid | title | price | status | admin_id |
+----+--------------+-----------------+-------+--------+----------+
| 5 | 202407173145 | 只能卓手机 | 4324 | 1 | 1 |
| 6 | 202407174437 | 小米手机 | 4328 | 1 | 1 |
| 7 | 202407176563 | 华为手机 | 4321 | 1 | 1 |
| 8 | 202407174759 | 联想平板 | 2131 | 2 | 1 |
| 9 | 202407173654 | 苹果电脑 | 4324 | 2 | 1 |
| 11 | 202407188130 | IT设计部门 | 432 | 2 | 1 |
+----+--------------+-----------------+-------+--------+----------+