Как извлечь INT из Queryset - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать график, который динамически обновляется на основе даты и количества 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')

Передача в виде кода JavaScript в HTML:

function salesComparisonChart() {
    var POComparisson = google.visualization.arrayToDataTable([
        ['Month', 'Count'],
        {% for POs in POs %}
            ['Month', parseInt('{{POs}}')],
        {% endfor %}
    ]);

С моим текущим кодом, данные, которые в настоящее времяпрошло выглядит так:

{'c': 4}
{'c': 2}
{'c': 1}

1 Ответ

0 голосов
/ 18 ноября 2018

Если вы просто после самих подсчетов, то вы сможете получить их плоский список, используя 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 %}
...