Создание графика на основе последнего id, введенного в базу данных
это будет большой вопрос для чтения, так что извините за это, но я не могу разобраться в этом. Я хочу создать график, но только со значениями для последнего добавленного id в базе данных, для этого у меня есть следующая модель:
class Device (models.Model):
patientId = models.IntegerField(unique=True)
deviceId = models.CharField(unique=True,max_length=100)
hour = models.DateTimeField()
type = models.IntegerField()
glucoseValue = models.IntegerField()
У меня есть кнопка загрузки, которая принимает файл txt, преобразует его в файл excel, а затем добавляет каждую строку в базу данных, вот UI: Интерфейс приложения
Для отправки данных я использую следующий код в файле views.py:
def html(request, filename):
#Data for the graph
id = list(Device.objects.values_list('patientId', flat=True).distinct())
labels = list(Device.objects.values_list('hour', flat=True))
glucose_data = list(Device.objects.values_list('glucoseValue', flat=True))
data = glucose_data
test123 = select_formatted_date(labels)
print(test123)
#f = DateRangeForm(request.POST)
context = {"filename": filename,
"collapse": "",
"patientId": id,
"dataSelection": test123,
"labels": json.dumps(labels, default=str),
"data": json.dumps(data),
#"form": f
}
Для приема данных у меня есть следующая структура в index.html:
var ctx = document.getElementById("weeklyChart");
var hourly = document.getElementById("dailyChart");
var myLineChart = new Chart(ctx, {
type: 'line',
data: {
labels: {{ labels|safe}},
datasets: [{
label: "Value",
lineTension: 0.3,
backgroundColor: "rgba(78, 115, 223, 0.05)",
borderColor: "rgba(78, 115, 223, 1)",
pointRadius: 3,
pointBackgroundColor: "rgba(78, 115, 223, 1)",
pointBorderColor: "rgba(78, 115, 223, 1)",
pointHoverRadius: 3,
pointHoverBackgroundColor: "rgba(78, 115, 223, 1)",
pointHoverBorderColor: "rgba(78, 115, 223, 1)",
pointHitRadius: 10,
pointBorderWidth: 2,
data: {{ data|safe}},
}],
},
options: {
maintainAspectRatio: false,
layout: {
padding: {
left: 10,
right: 25,
top: 25,
bottom: 0
}
},
scales: {
xAxes: [{
time: {
unit: 'date'
},
gridLines: {
display: false,
drawBorder: false
},
ticks: {
maxTicksLimit: 7
}
}],
yAxes: [{
ticks: {
maxTicksLimit: 5,
padding: 10,
// Include a dollar sign in the ticks
callback: function(value, index, values) {
return + number_format(value);
}
},
gridLines: {
color: "rgb(234, 236, 244)",
zeroLineColor: "rgb(234, 236, 244)",
drawBorder: false,
borderDash: [2],
zeroLineBorderDash: [2]
}
}],
},
legend: {
display: false
},
tooltips: {
backgroundColor: "rgb(255,255,255)",
bodyFontColor: "#858796",
titleMarginBottom: 10,
titleFontColor: '#6e707e',
titleFontSize: 14,
borderColor: '#dddfeb',
borderWidth: 1,
xPadding: 15,
yPadding: 15,
displayColors: false,
intersect: false,
mode: 'index',
caretPadding: 10,
callbacks: {
label: function(tooltipItem, chart) {
var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || '';
return datasetLabel + ': ' + number_format(tooltipItem.yLabel);
}
}
}
}
});
А html выглядит следующим образом:
<div class="col-xl-12 col-lg-12">
<div class="card shadow mb-6">
<!-- Card Header - Dropdown -->
<div
class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Patient Data Over an Week</h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in"
aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Dropdown Header:</div>
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="chart-area">
<canvas id="weeklyChart"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
Мой вопрос заключается в том, как я могу отобразить в пользовательском интерфейсе значения меток, которые я передал в представлениях, но только для последнего введенного id? Надеюсь, я понятно объяснил свой вопрос.