在Django中序列化小数点时出错:'ValuesListQuerySet'对象没有'_meta'属性

0 投票
1 回答
1197 浏览
提问于 2025-04-16 05:24

有没有办法把Django中的FloatField模型实例进行序列化?我在一个管理命令中有以下代码:

def chart_data(request):
    i = 1
    chart = open_flash_chart()
    chart.title = t   
    for manager in FusionManagers.objects.all():
      net_data = manager.netio_set.values_list('Net', flat=True)
      clean = serializers.serialize('json', [ net_data, ])
      new = line()
      new.values = clean
      locals()["graph_" + str(i)] = new
      chart.add_element(locals()["graph_" + str(i)])
      i = i + 1
  return HttpResponse(chart.render())

但是我遇到了一个错误:'ValuesListQuerySet'对象没有'_meta'这个属性。'Net'字段是浮点数类型,值被限制到小数点后两位,所以我得到的值是400.23等等……这些可以被序列化吗?

1 个回答

1

Django的序列化模块只能处理完整的Django对象的列表或查询集;ValuesListQuerySet里面是元组,而不是Django对象。

我在引用Django的一个评论,关于问题 #8090。如果你想使用Django自带的序列化功能,你需要获取一个QuerySet。如果不这样做,你就得使用自定义的序列化模块。

撰写回答