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