Простой цикл 'for loop' для поля datetime не работает в Django (google chart)

gatt chart not display properly Я пытаюсь использовать google chart в моем Django проекте, google chart требует формат типа ['label1', 'label2', 'label3', new Date(Y, m, d), new Date(Y, m, d), null, 100, null], это как список, поэтому я пытаюсь упростить задачу, я заменил только дату и оставил другие поля по умолчанию. У меня есть модель в Django, которая имеет поле start_date и поле due date, так что единственное, что я делаю не так, это помещаю их в 2 'new Date' и в цикл for, почему-то коды не работают, я был бы очень признателен, если бы кто-нибудь мог взглянуть, будьте здоровы.

models.py

start_date = models.DateTimeField(default=datetime.datetime.now)
due_date = models.DateTimeField(default=datetime.datetime.now)

views.py

def visualisation(request, project_id):
    
    project = Project.objects.get(id=project_id)
    counts_data = Todo.objects.aggregate(
        to_do_count=Count('id', filter=Q(status='to_do')),
        in_progress_count=Count('id', filter=Q(status='in_progress')),
        done_count=Count('id', filter=Q(status='done'))
        )
    todos = project.todo_set.order_by('-project_code')

    return render(request, 'todo_lists/progress.html', {"counts_data":counts_data,'team':team,'todos':todos})

HTML

function drawChart() {

  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Task ID');
  data.addColumn('string', 'Task Name');
  data.addColumn('string', 'Resource');
  data.addColumn('date', 'Start Date');
  data.addColumn('date', 'End Date');
  data.addColumn('number', 'Duration');
  data.addColumn('number', 'Percent Complete');
  data.addColumn('string', 'Dependencies');

  data.addRows([
    
    {% for todo in todos %}
        ['Introduction', 'Introduction Project', 'Introduction',
         new Date({{ todo.start_date|date:"Y,m,d"}}), new Date({{ todo.due_date|date:"Y,m,d"}}), null, 50, null],{% endfor %}
        ]);
    
  var options = {
    height: 400,
    width: 1000,
    gantt: {
      trackHeight: 30
    }
  };

Вы смешиваете цикл for с типами данных, что может быть вашей проблемой. Я думаю, что вам лучше использовать что-то вроде этого:

{% for todo in todos %}
data.addRow(
        ['Introduction', 'Introduction Project', 'Introduction',
         new Date({{ todo.start_date|date:"Y,m,d"}}), new Date({{ todo.due_date|date:"Y,m,d"}}), null, 50, null]
        );
{% endfor %}

Я решил проблему, оказалось, что проблема в теге шаблона, первый столбец набора данных не может быть одинаковым, иначе будет выводиться одна строка, а так как у меня satrt_date и due_date, которые хранятся в базе данных одинаковые, то на графике ничего не отображалось. Я использовал следующий код в моем HTML:

HTML

'''

{% for todo in todos %}
        ['{{ todo.name }}', 'Introduction Project', 'Introduction',
         new Date({{todo.start_date|date:"Y, m, d"}}), new Date({{todo.due_date|date:"Y, m, d"}}), null, 50, null]{% if not forloop.last %},{% endif %}
{% endfor %} 

'''

Вернуться на верх