2017-02-06 101 views
1

我對Django/web開發仍然很陌生,但對Python和PSQL有經驗。Django查詢數據庫並將數據發送到模板

我有一個psql數據庫,其中一個表的ID,日期和值爲股票投資組合。該表格標題爲absolutedollarvalue。

我想將數據發送到模板,然後使用Highcharts.JS對其進行繪製。據我所知,我需要設置models.py來查詢在Django中安裝的數據庫,將其轉換爲JSON,然後將其發送到模板進行繪圖。

任何人都可以告訴我,如果這是正確的語法來獲取id,日期和值,以及如何發送日期和json格式的值到模板?

這是適用的模型部分:

class Absolutedollarvalue(models.Model): 
    cik = models.CharField(max_length=16) 
    date = models.DateField() 
    value = models.DecimalField(max_digits=65535, decimal_places=65535) 

    class Meta: 
     managed = False 
     db_table = 'absolutedollarvalue' 

下面是我的views.py代碼:

from django.shortcuts import render 
from django.http import HttpResponse 
from django.db import connection 
from toa.models import Absolutedollarvalue as adv 
import psycopg2 
import json 
import datetime 

def adv(request): 
    adv.objects 
    a = adv(id = '1103804') 

    return render(request,toa/graphs.html,a) 

這是我的模板:

<html> 
<head> 
    <title> Fund Performance </title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
<script src="http://code.highcharts.com/highcharts.js"></script> 

</head> 
<body> 
    <div id="chart_container" style="width:100%; height:400px;"></div> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     var absolutedollarval = { 
     chart: { 
      renderTo: 'chart_panel', 
      type: 'time-series', 
     }, 
     legend: {enabled: false}, 
     title: {text: 'Daily NAV'}, 
     xAxis: {title:{text:'Date'}}, 
     yAxis: {title: {text: 'dollar value'}} 
     }; 
     var chartDataUrl = "{% url 'chart_data_json' %}?name = avg_by_day" 
     +"&days=14"; 
     $.getJSON(chartDataUrl, 
     function(data){ 
     absolutedollarval.xAxis.categories= 
     absolutedollarval.series[0].name = 
     absolutedollarval.series[0].data = 
     var chart = new Highcharts.Chart(absolutedollarval); 
     }); 
    }); 
    </script> 
</body> 
</html> 

真的很感謝你的幫助可以給。謝謝!

編輯:

這是你將如何價值推到模板,如果我想要的日期和值列? JSON格式

def adv(request): 
    dates = adv.objects.filter(cik = '1103804').values('date') 
    vals = adv.objects.filter(cik ='1103804').value('absolutedollarvalue') 
    data = serializers.serialize('json', dates) 
    data2 = serializers.serialize('json',vals) 
    return render(request,'toa/graphs.html',{"dates":data,"values":data2}) 
+1

你'adv'功能看起來像廢話。您應該閱讀django文檔以瞭解如何編寫視圖函數並傳遞要在模板中呈現的變量。 –

+0

我用django文檔檢索對象,他們給出了例子:>>> Blog.objects >>> b = Blog(name ='Foo ',tagline ='Bar') >>> b.objects – user3628240

+0

所以我想對象a應該給我所有的數據與該ID的行。我只是想將日期和值轉換爲json,然後將它發送給highcharts – user3628240

回答

2

值發送到模板:

from django.core import serializers 

def adv(request): 
    adv.objects 
    a = adv(id = '1103804') #Will fetch all the column 
    a = adv(id = '1103804').values('columnName') #Will fetch the particular column. 
    data = serializers.serialize('json', a) 
    context = Context(data) 
    return render(request,'toa/graphs.html',context) 
    render(request, "foo.html", {'jsonKey': jsonValue}) #For passing individual JSON 
+0

有沒有辦法分別發送數據?如日期欄和相應的值欄? – user3628240

+0

爲了讓highchart中的x和y軸具有單獨的數據很容易? – user3628240

+0

@ user3628240,你可以像這樣傳遞它'render(request,「foo.html」,{'jsonKey':jsonValue})' –

相關問題