Je cours une requête dans views.py dans un environnement django. Tout est actuellement en cours d'exécution locale avec l'idée de le pousser finalement dans un environnement heroku. J'utilise PostgreSQL.Diagrammes en haute résolution de la requête django
def test(request):
click_results = clickstats.objects.filter(user=request.user.username, urlid=pk_int)
data = parse_data_browser(request, click_results)
template = get_template('index.html')
context = {
'data': data,
}
return HttpResponse(template.render(context,request))
def parse_data_browser(request,click_results):
browsers = click_results.values('browser').annotate(browser_qty=Count('browser')).order_by()
print("browsers")
print(browsers)
return browsers
la sortie imprimée par parse_data_browser
ressemble à ceci:
<QuerySet [{'browser': 'Chrome Mobile', 'browser_qty': 4}, {'browser': 'Chrome', 'browser_qty': 9}]>
le défi est d'obtenir dans cette forme:
data = [{name: 'Chrome Mobile', y: 4}, {name: 'Chrome', y: 9}]
passant ensuite à mon index.html en utilisant les scripts suivants:
<script>
var chart_id = {{ chartID|safe }}
var chart = {{ chart|safe }}
var title = {{ title|safe }}
var yAxis = {{ yAxis|safe }}
var data = {{ data|safe }}
</script>
et enfin créer le graphique avec ce script:
<script>
$(function() {
var myChart = Highcharts.chart('chartID', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
series: [{
name: 'Brands',
colorByPoint: true,
data: [{name: 'Chrome Mobile', y: 4}, {name: 'Chrome', y: 9}]
}]
});
});
</script>
J'ai essayé plusieurs choses avec dict et ajouter des fonctions, mais rien ne donne la sortie à droite.
Quelle est la meilleure approche. Je préférerais ne pas commencer à empiler des fichiers output-json sur mon environnement car cela me semble être une solution.
merci pour l'aide
exactement ce que je cherchais! grande aide! a dû faire quelques modifications car 'item.browser' a renvoyé un objet' AttributeError: 'dict' n'a pas d'attribut 'browser'' et a fait une solution de contournement comme ceci: 'data = [{' name ': item [' browser '], 'y': item ['browser_qty']} pour item dans les navigateurs] '- n'aime pas les templates dans mon html, tres en désordre :-) – radzia2
ah oui, bien sur c'est un dict, va mettre à jour ma réponse. Heureux de t'avoir aidé :) –