2017-02-06 3 views
1

Я по-прежнему новичок в разработке Django/web, но имею опыт работы с Python и PSQL.База данных запросов Django и отправка данных в шаблон

У меня есть база данных psql со столом с id, date и значением для портфеля ценных бумаг. В таблице указано абсолютное значение.

Я хочу отправить данные в шаблон, а затем нарисуйте его с помощью Highcharts.JS. Насколько я понимаю, мне нужно настроить models.py для запроса базы данных, которая установлена ​​в Django, конвертировать ее в JSON, а затем отправить ее в шаблон для графического отображения.

Может ли кто-нибудь сказать мне, является ли это правильным синтаксисом для получения идентификатора, даты и значения и как отправить дату и значение в формате 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> 

Действительно ценим любую помощь вам может дать. Благодаря!

Edit:

ли это, как вы бы подтолкнуть значение шаблона, если я хочу дату и значение столбца?

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 docs, чтобы узнать, как написать функцию просмотра и передать переменные, которые будут отображаться в шаблоне. –

+0

Я использовал django docs для извлечения объектов, и они приводили пример: >>> Blog.objects >>> b = Блог (name = 'Foo ', tagline =' Bar ') >>> b.objects – user3628240

+0

Итак, я думаю, что объект a должен предоставить мне все строки данных с этим id. Я просто хочу преобразовать дату и значение в json, а затем отправить его в highcharts. – user3628240

ответ

2

Отправить значение в формате JSON для шаблона:

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

Так что легко иметь отдельные данные для оси x и y в высоких диаграммах? – user3628240

+0

@ user3628240, вы можете передать его так: render (request, "foo.html", {'jsonKey': jsonValue}) ' –

Смежные вопросы