Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Queryset将ModelFormField调用到图表JS-Django中_Javascript_Python_Django_Chart.js - Fatal编程技术网

Javascript Queryset将ModelFormField调用到图表JS-Django中

Javascript Queryset将ModelFormField调用到图表JS-Django中,javascript,python,django,chart.js,Javascript,Python,Django,Chart.js,我试图将用户提交的数据从django模型表单传递到一个Chart.js图表中,该图表呈现在详细视图页面上。我认为,为了将my view.py中模型表单提交实例的数据传递给呈现图表的js,我需要构造一个queryset。我无法理解如何编写正确的查询集,以便为表单提交实例(如下所列)传递两个特定字段的整数值 当我为TAM和LTM_sales将值硬编码到基于类的视图定义的变量中时,图表将呈现。请参阅下面的代码: 型号。py: class Strategy(models.Model): tota

我试图将用户提交的数据从django模型表单传递到一个Chart.js图表中,该图表呈现在详细视图页面上。我认为,为了将my view.py中模型表单提交实例的数据传递给呈现图表的js,我需要构造一个queryset。我无法理解如何编写正确的查询集,以便为表单提交实例(如下所列)传递两个特定字段的整数值

当我为TAM和LTM_sales将值硬编码到基于类的视图定义的变量中时,图表将呈现。请参阅下面的代码:

型号。py:

class Strategy(models.Model):
    total_addressable_market = models.IntegerField(blank=True, null=True)
    last_twelve_months_sales = models.IntegerField(blank=True, null=True)
视图.py

def strategy_detail(request, id):
    strategy = get_object_or_404(Strategy, id=id)
    ....
    context ={
        'strategy': strategy,
        ....
    }
    return render(request,'hypo_app/strategy_detail.html', context)

class ChartData(APIView):
    authentication_classes = []
    permission_classes = []
    
    def get(self, request, default=None):
        strategy = Strategy.objects.all()
        TAM = ??
        LTM_sales = ??
        labels = ['TAM', 'LTM Revenue']
        default_items = [TAM, LTM_sales]
        data = {
        "labels": labels,
        "default": default_items,
        }
        return Response(data)
URL

from django.urls import path
from .views import UserExperimentListView, ChartData
from . import views

urlpatterns = [
    ....
    path('chart_data/', ChartData.as_view(), name='chart_data'),
]
strategy_detail.html文件中的JAVASCRIPT

<script>
{% block jquery %}
var endpoint = '/chart_data/'
var defaultData = []
var labels = [];
$.ajax({
    method: "GET",
    url: endpoint,
    success: function(data){
        labels = data.labels
        defaultData = data.default
        setChart()
    },

    error: function(error_data){
        console.log("error")
        console.log(error_data)
    }
})

function setChart(){
    var ctx = document.getElementById('myChart');
        var myChart = new Chart(ctx, {
            type: 'doughnut',
            data: {
                labels: labels,
                datasets: [{
                    label: 'Market Share',
                    data: defaultData,

提交表单数据的约定是通过POST方法,而不是GET方法。若要基于表单数据返回查询集,请使用名为的ORM方法。@yedpodtrzitko我正在“策略详细信息”页面中根据模型表单提交的数据呈现视图。然后我尝试将提交的数据传递到chart.js。所以我认为chart.js必须依赖get函数才能检索模型表单字段提交。
from django import forms
from .models import Experiment, Thread, Strategy
from django.contrib.auth.models import User
from datetime import datetime, date


class StrategyCreateForm(forms.ModelForm):
    class Meta:
        model = Strategy
        fields = (
            ....
            'total_addressable_market',
            'last_twelve_months_sales',
        )