Я пытаюсь отобразить диаграмму в моем приложении django, используя эту ссылку Интегрировать графики в Django
Вот мой Views.py
def json_example(request):
return render(request, 'classroom/teachers/json_example.html')
def chart_data(request):
dataset = DispatchPlan.objects.all()
print("dataset is ", dataset)
# port_display_name = dict()
# for port_tuple in Passenger.PORT_CHOICES:
# port_display_name[port_tuple[0]] = port_tuple[1]
chart = {
'chart': {'type': 'pie'},
'title': {'text': 'Titanic Survivors by Ticket Class'},
'series': [{
'name': 'Embarkation Port',
'data': list(map(lambda row: {'name': row['weight'], 'y': row['route_distance']}, dataset))
}]
}
return JsonResponse(chart)
Когда я запускаю приложение, оно показывает следующую ошибку:
TypeError: объект «DispatchPlan» не является подписным
в этой строке
'data': list(map(lambda row: {'name': row['weight'], 'y': row['route_distance']}, dataset))
Я предполагаю, что это потому, что я не отображаю это правильно, как мне решить это?
Traceback:
Traceback:
Файл
"C: \ Users \ Sid \ AppData \ Local \ Programs \ Python \ Python37 \ Lib \ сайт-пакеты \ Джанго \ ядро \ обработчики \ exception.py"
во внутреннем
35. response = get_response (запрос)
Файл
"C: \ Users \ Sid \ AppData \ Local \ Programs \ Python \ Python37 \ Lib \ сайт-пакеты \ Джанго \ ядро \ обработчики \ base.py"
в _get_response
128. response = self.process_exception_by_middleware (e, запрос)
Файл
"C: \ Users \ Sid \ AppData \ Local \ Programs \ Python \ Python37 \ Lib \ сайт-пакеты \ Джанго \ ядро \ обработчики \ base.py"
в _get_response
126. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)
Файл
"D: \ Downloads-HDD \ агрегатор-мастер \ django_school \ класс \ вид \ teachers.py"
в chart_data
884. 'data': [{'name': row.weight, 'y': row.route_distance} для строки в наборе данных]
Файл
"D: \ Downloads-HDD \ агрегатор-мастер \ django_school \ класс \ вид \ teachers.py"
в
884. 'data': [{'name': row.weight, 'y': row.route_distance} для строки в наборе данных]
Тип исключения: AttributeError в / shipper / json-example / data /
Значение исключения: объект 'dict' не имеет атрибута 'weight'
Models.py
class DispatchPlan(models.Model):
bid_status_choices = (
('Hold', 'Hold'), ('Active', 'Active'), ('Assigned', 'Assigned'), ('Dispatched', 'Dispatched'),
('Delayed', 'Delayed'), ('Delivered', 'Delivered'))
mtypes = (('Fragile', 'Fragile'), ('Non-Fragile', 'Non-Fragile'))
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='dispatch_quizzes')
comments = models.TextField(max_length=256)
truck_type = models.ForeignKey(truck_type, on_delete=models.CASCADE, related_name='dispatch_type')
truck_name = models.ForeignKey(truck_name, on_delete=models.CASCADE, related_name='dispatch_name')
origin = models.CharField(max_length=255, default=0)
destination = models.CharField(max_length=255, default=0)
total_trucks = models.IntegerField(default=0)
material_type = models.CharField(max_length=255, default=0, choices=mtypes)
scheduled_date = models.DateTimeField(max_length=255, default=0)
offered_price = models.IntegerField(default=0)
weight = models.IntegerField(default=0)
status = models.CharField(max_length=255, default='Active', choices=bid_status_choices)
created_on = models.DateTimeField(auto_now_add=True)
route_distance = models.IntegerField(default=0)
route_tat = models.CharField(max_length=255, default=0)
etd = models.DateTimeField(default=timezone.now)
eta = models.DateTimeField(default=timezone.now)
route_link = models.CharField(max_length=255, default=0)