[英]How to generate bubble chart (Chart.js) using data from database FILTERED by user in Django?
我是Django的新手,只停留在一個似乎不是問題的地方。 我正在嘗試使用Python,Django,MySQL和Chart.js進行動態氣泡圖。 我的數據庫中存儲了組織。 它們具有一些屬性,例如名稱,收入,收件人數量等,我正在向用戶顯示它,他可以對其進行過濾(例如,他可以顯示僅收件人多於用戶指定的組織)。 然后,我想創建一個顯示這些組織的氣泡圖。 我設法做到了,但是使用了所有數據庫記錄(靜態解決方案,無需用戶交互)。 因此,現在在氣泡圖上,我可以看到所有內容,並且希望使其動態化-取決於用戶輸入(僅顯示已過濾的組織)。 過濾的數據位於myuserlist1.html文件的filter.qs中。 現在,我在views.py中使用以下代碼,以JSON格式將數據庫中的所有記錄都定義為URL:
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
organizations = Opp.objects.all().values()
data = list(organizations)
return Response(data)
def search(request):
user_list = User.objects.all()
user_filter = UserFilter(request.GET, queryset=user_list)
return render(request, 'user_list1.html', {'filter': user_filter})'''
我用於存儲結果的網址:
url(r'^api/chart/data/$', ChartData.as_view()),
這是我的chart.html文件的一部分:
<script>
{% block jquery %}
var endpoint = '/api/chart/data/'
var endpoint= form.attr('action')
var dynamicColors = function() {
var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
return "rgb(" + r + "," + g + "," + b + ")";
}
$.ajax({
method: "GET",
url: endpoint,
success: function(data){
//...... some logic there
}
})
</script>
我不知道該怎么辦。 我本想使過濾后的數據中的JSON定位在URL下,而不是數據庫中的所有數據下,但是我不知道該怎么做。 我不知道如何從視圖訪問過濾的查詢集。 任何幫助,將不勝感激。 先感謝您!
您可以發出HTTP POST請求而不是GET請求,以將JSON數據傳遞到后端。 例如:
$.ajax({
method: "POST",
url: endpoint,
data: {
"organisation": "organisation_name"
},
success: function(data){
//...... some logic there
}
})
這會將data
作為JSON序列化對象傳遞給Django視圖。
然后,在Django視圖上,您可以反序列化組織並過濾模型:
import json
def get(self, request, format=None):
json_data = json.loads(request.body)
organisation_name = json_data.get("organisation")
organizations = Opp.objects.filter(name=organisation_name).values()
data = list(organizations)
return Response(data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.