0

我正在尝试创建一个基于 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}
4

1 回答 1

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 %}
于 2018-11-18T18:49:44.727 回答