我正在尝试创建一个基于PO的日期和数量动态更新的图形。
模型:
class JobOrder(models.Model):
status = models.CharField('status', choices=STATUS, max_length=200, default="Waiting")
job_order = models.IntegerField(primary_key=True)
remarks = models.CharField(max_length=45, blank=True, null=True)
rush_order = models.IntegerField()
date_issued = models.DateField('date_issued', auto_now_add=True)
date_required = models.DateField()
client = models.ForeignKey(Client, on_delete= models.CASCADE)
total_amount = models.FloatField()
从视图中查询:
POs = JobOrder.objects.values('date_issued__year', 'date_issued__month').annotate(c=Count('id')).values('c')
通过HTML的javascript代码进行传递:
function salesComparisonChart() {
var POComparisson = google.visualization.arrayToDataTable([
['Month', 'Count'],
{% for POs in POs %}
['Month', parseInt('{{POs}}')],
{% endfor %}
]);
使用我当前的代码,正在传递的数据如下所示:
{'c': 4}
{'c': 2}
{'c': 1}
答案 0 :(得分:0)
如果您只是在数数本身,那么您应该可以使用values_list
来检索它们的简单列表:
POs = JobOrder.objects.values(
'date_issued__year', 'date_issued__month'
).annotate(c=Count('id')).values_list('c', flat=True) # Retrieve a flat list
然后,您可以在模板中删除parseInt
,也许还可以将循环变量重命名为PO
,以减少名称的混乱:
{% for PO in POs %}
['Month', {{ PO }}],
{% endfor %}