简单 'for loop' 日期时间字段在 Django 中不起作用(google 图表)

Easy 'for loop' for datetime field not working in Django(google chart)

我正在尝试在我的 Django 项目中使用 google 图表,google 图表需要格式如下 ['label1', 'label2', 'label3', new Date(Y, m, d), new Date(Y, m, d), null, 100, null], 它是 就像一个列表,所以我首先尝试保持简单,我只用模板标签替换了日期并将其他字段保留为默认值。模板标签在 P 元素中单独运行良好,输出结果为“2014、10、12”。 如果有人能看一下,我将不胜感激,干杯。

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]{% if not forloop.last %},{% endif %}{% endfor %}
        ]);
    

您正在将 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 %}

我解决了,原来是template标签的问题,数据集的第一列不能相同,否则会出现一行输出,而且由于我的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 %} 

'''