以下是我的代码,我想通过ajax获取到数据库中的数据,并且将之插入到柱状图分布里面,该如何实现
前端代码
<script type="text/javascript">
$(function(){
initBar();
})
function initBar() {
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '员工业绩汇总信息',
textAlign: 'auto',
left:"center",
},
tooltip: {},
legend: {
data: [], //后台获取
bottom:0
},
xAxis: {
data: [] //后台获取
},
yAxis: {},
series: [] //后台获取
};
$.ajax({
url:"/chart/bar/",
type: 'GET',
dataType: 'json',
success: function(res){
//将后台返回的数据,更新到option中
if (res.status){
option.legend.data=res.data.legend;
option.xAxis.data=res.data.x_axis;
option.series=res.data.series_list;}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
})
}
后端代码
def chart_bar(request):
"""构造柱状图数据"""
legend = ["张三"]
series_list = [
{
"name": "张三",
"type": 'bar',
"data": [5, 20, 36, 10, 10, 20]
}
]
x_axis = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
result = {
"status": True,
"data": {
'legend': legend,
'series_list': series_list,
'x_axis': x_axis,
}
}
return JsonResponse(result)
数据库代码
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 |
+----+--------------+-----------------+-------+--------+----------+