【发布时间】:2018-12-02 20:08:14
【问题描述】:
我试图了解是否可以将动态数据合并到 Django Chart JS 架构中。我浏览了几个教程,最终让 Django 与 ChartJS 一起工作,当我能够对值进行硬编码然后显示相关图表时,这非常好。我最终要做的是对我的数据库中的动态数据进行同样的练习。我在 SO,https://stackoverflow.com/questions/47575896/dynamic-chart-using-django-and-chart-js#= 中发现了这个相同的问题,但没有人回答。这正是我想要达到的目标。我已经探索了一些序列化程序,我需要先序列化数据吗?提前感谢您的想法和反馈。
根据反馈,我已在相关图表中添加了上下文,但数据仍未通过。这是我的看法:
class ChartView(LoginRequiredMixin, TemplateView):
model = Myobject
template_name = 'director/chart.html'
def get_context_data(self, **kwargs):
context = super(ChartView, self).get_context_data(**kwargs)
myobject = Myobject.objects.filter(field__in=self.request.user.userprofile.field.all())
print(myobject)
context['myobject'] = myobject
return context
我只是得到一个空白屏幕,根本没有图表,这表明显然有问题。我是否需要对 Javascript 进行其他更改才能告诉它有关该对象的信息?我的假设是否定的,我正在将此信息视图传递给 context_data。
我也在使用 Ajax,所以我不确定这是否是一个复杂的因素。这是我的javascript。
<script>
var endpoint = '{% url "myobject:chart_data" %}'
var defaultData = [];
var labels = [];
$.ajax({
method: "GET",
credentials: 'same-origin',
url: endpoint,
success: function(data){
labels = data.labels
defaultData = data.default
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: [{% for i in myobject %}{{ i.labels }},{% endfor %}],
datasets: [{
data: [{% for i in myobject %}{{ i.data }},{% endfor %}]
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(153, 102, 255, 0.2)',
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(153, 102, 255, 1)',
],
borderWidth: 1
}]
}
})
},
error: function(error_data){
console.log("error")
console.log(error_data)
}
})
</script>
【问题讨论】:
标签: django python-3.x django-models django-views chart.js