我尝试使用Django-Chartit文档提供的模型和示例,使用django-chartit渲染页面。
我的模特看起来像这样。
class MonthlySchedule(models.Model):
''' Monthly schedule for django-chartit statistics'''
months = (
(u'jan',_('January')),
(u'feb',_('February')),
(u'mar',_('March')),
(u'apr',_('April')),
(u'may',_('May')),
(u'jun',_('June')),
(u'jul',_('July')),
(u'aug',_('August')),
(u'sep',_('September')),
(u'oct',_('October')),
(u'nov',_('November')),
(u'dec',_('December'))
)
programme = models.ForeignKey(Redaktion, related_name='red_monthly', null=True, on_delete=models.CASCADE)
year = models.CharField(_('Year'), max_length=4, blank=False, default=year)
month = models.CharField(_('Month'), choices=months, max_length=3)
current_size = models.DecimalField(_('Current size(TB)'), max_digits=4, decimal_places=1, blank=True, null=True)
target_size = models.DecimalField(_('Target size(TB)'), max_digits=4, decimal_places=1, blank=True, null=True)
def __str__(self):
return ''
class Meta:
verbose_name = (_("quota"))
verbose_name_plural = (_("quotas"))
我的观点看起来像这样......
@staff_member_required
def ChartitSchedule(request, red=None):
'''Monthly disk Quotas'''
ds = DataPool(
series=[{
'options': {
'source': MonthlySchedule.objects.filter(programme__pk=red)
},
'terms': [
'month',
{'Current Size': 'current_size'},
'target_size'
]
}]
)
cht = Chart(
datasource=ds,
series_options=[{
'options': {
'type': 'line',
'stacking': False
},
'terms': {
'month': [
'target_size',
'Current Size'
]
}
}],
chart_options={
'title': {
'text': 'Disk Quotas'
},
'xAxis': {
'title': {
'text': 'Month'
}
}
})
return render(request, 'sysadmin/chartit.html', {'this_chart': True, 'these_quotas':cht})
我的模板看起来像这样......
{% extends 'base2.html' %}
{% block title %}Programme Quotas{% endblock %}
{% load static %}
{% block add_to_header %}
{% load chartit %}
{{ these_quotas|load_charts:"container" }}
{% endblock %}
{% block content %}
<!-- CHART-IT -->
{% if this_chart %}
<div id="pagetitle">Disk Quotas {{ red }}</div>
<div id="content"><!-- CONTENT -->
<div id='container'></div>
</div><!-- CONTENT -->
{% endif%}
{% endblock content %}
这与文档中的示例几乎相同,只是我使用了几个月的选择(我认为这是一个糟糕的主意,因为它们按字母排序)。
视图返回两个chartit对象,json看起来没问题。
我得到的错误是检测到“循环”参考&#39;异常位置:c:\ python35 \ Lib \ json \ _编码器,在iterencode中,第256行
我认为这几乎不在我的手中 - 或者我做错了什么?
答案 0 :(得分:0)
抱歉 - 回答我自己的问题,但我认为对于任何试图使用django-chartit寻找这个问题答案的人来说都很重要。
完全遵循文档,我得到它的工作。 Chartit不接受模型中选择的月份值 - 可能会记录下来,说实话我还没有读完整个文档。
月份名称的第二个示例中有一个修复,通过在视图中修复它们,但是如果您尝试在模型中执行此操作以便您可以获得具有月份名称的漂亮管理表单 - 它将失败一个循环错误。