【发布时间】:2019-03-14 11:00:54
【问题描述】:
我有这些可以按名称调用的列表对象。它们具有用户可以输入的数值。我将如何将每个列表转换为 js 可以呈现的图表?我试过这个:Django Queryset to dict for use in json 但无法让它工作。获取“QuerySet 类型的对象不是 JSON 可序列化的”。 Chart js 需要为每个列表有自己的行并显示这些行中的值。这是我使用 views 中的链接所取得的进展:
首先我得到所有用户列表:
user_lists = List.objects.filter(user=user)
然后我得到每个列表的数值
list_data = {}
for list in user_lists:
list_data[list.name] = DataItem.objects.filter(list=list)
当我应该将这些列表转换为 chart.js 可以理解的内容时,我遇到了困难..
list_data_json = json.dumps(list_data, cls=DjangoJSONEncoder)
顺便说一句,我是否在正确的轨道上将此转换为视图,对吗?还是属于其他地方?
不知道是否需要这些,但这里是这些列表和其中数据项的模型:
class List(models.Model):
name = models.CharField(max_length=100, default="")
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='lists')
def __str__(self):
return self.name
class Meta:
unique_together = ['name', 'user']
class DataItem(models.Model):
data = models.IntegerField(default=0)
list = models.ForeignKey(List, on_delete=models.CASCADE, related_name='data_items')
编辑 输出查询集看起来像这样(这是 json.dumps 试图读取的问题):
<QuerySet [{'name': 'squat', 'data_items__data': 1}, {'name': 'deadlift', 'data_items__data': 55}, {'name': 'Chest', 'data_items__data': None}, {'name': 'asd', 'data_items__data': 444}, {'name': 'asd', 'data_items__data': 32342}, {'name': 'asd', 'data_items__data': 42342}]>
对我来说看起来不错,有一个列表列表,列表有一个名称“蹲”,然后是值。但再次出现此错误“'QuerySet' object is not callable”
【问题讨论】:
标签: django