#django #django-templates
#django #django-шаблоны
Вопрос:
Использование Google motion chart для генерации графика в django. я столкнулся с проблемой формата даты при преобразовании даты из django t0 JavaScript в новую дату (2011, 01, 01).
ссылка на диаграмму движения:http://code.google.com/apis/chart/interactive/docs/gallery/motionchart.html
ниже приведен код, как :
ml =[]
for i in data:
year = m['month'].strftime('%Y')
month = m['month'].strftime('%m')
day = m['month'].strftime('%d')
check = 'new Date(%s, %s, %s)' % (year, month, day)
ml.append([str(m[selected_mode]),check, m['total']])
ml вернул список
у меня есть этот вывод в hmtl :
<script type="text/javascript">
google.load('visualization', '1', {'packages':['motionchart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Mode');
data.addColumn('date', 'Date');
data.addColumn('number', 'Total');
data.addRows([["sl", "new Date(2011, 01, 01)", 31], ["kl", "new Date(2011, 02, 01)", 13], ["ml", "new Date(2011, 01, 01)", 51], ["rl", "new Date(2011, 03, 01)", 30], ["ml", "new Date(2011, 02, 01)", 22], ["sl", "new Date(2011, 03, 01)", 30], ["kl", "new Date(2011, 03, 01)", 28], ["sl", "new Date(2011, 02, 01)", 24], ["rl", "new Date(2011, 01, 01)", 17], ["rl", "new Date(2011, 02, 01)", 4], ["kl", "new Date(2011, 01, 01)", 5], ["sl", "new Date(2011, 04, 01)", 1]]);
var chart = new google.visualization.MotionChart(document.getElementById('chart_div'));
chart.draw(data, {width: 600, height:300});
}
</script>
здесь «новая дата (2011, 01, 01)» принимает вид строки, но она должна быть в новой дате (2011, 01, 01), не могли бы вы, пожалуйста, помочь мне, как сделать так, чтобы у нее была новая дата (2011, 01, 01)
«новая дата(2011, 01, 01)» ==> новая дата (2011, 01, 01)
Ниже приведен шаблон
{% extends "newbase.html" %}
{% block extra_js %}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {'packages':['motionchart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Mode');
data.addColumn('date', 'Date');
data.addColumn('number', 'Total');
data.addRows({{ m1|safe }});
var chart = new google.visualization.MotionChart(document.getElementById('chart_div'));
chart.draw(data, {width: 600, height:300});
}
</script>
{% endblock %}
{% block content %}
<div id="chart_div" style="width: 600px; height: 300px;"></div>
</center>
{% endblock %}
Комментарии:
1. Итак, какой шаблон вы используете для получения этого вывода?
2. Как, черт возьми, это должно быть полезным ответом? Что такое шаблон Django, который вы используете для получения этого вывода?
3. Ой, извините, я неправильно понял, я обновил рассматриваемый шаблон…
4. @ denial, была ли возможность изучить мой вопрос?
Ответ №1:
Наконец-то я решил свою проблему. создал dic и отобразил в html, ниже приведен фрагмент
<script type="text/javascript">
google.load('visualization', '1', {'packages':['motionchart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Mode');
data.addColumn('date', 'Date');
data.addColumn('number', 'Total');
data.addRows([
{% for fetch in m1 %}
[" {{ fetch.mode }}", new Date("{{ fetch.month|date:'D M d 00:00:00 Y' }}"), {{ fetch.total }}],
{% endfor %}
]);
var chart = new google.visualization.MotionChart(document.getElementById('chart_div'));
chart.draw(data, {width: 1000, height:300});
}
</script>
Комментарии:
1. Чрезвычайно полезно. Кроме того, можно легко создать шаблон-фильтр и отформатировать дату.
Ответ №2:
dataTable.addRows( [
{% for d in data %}
["{{d.id}}","{{d.description|escapejs}}",new Date({{d.StartDate|date:"Y"}},{{dL.StartDate|date:"n"}}-1,{{d.StartDate|date:"j"}}),new Date()],
{% endfor %}
]);
Google Chart takes only Date() Object. Hence implemented as above and it is working for me.