【问题标题】:Django Serializing of ValueQuerySetValueQuerySet 的 Django 序列化
【发布时间】:2020-12-21 08:44:02
【问题描述】:

所以我得到了以下 ValueQuerySet

records = Maintenance.objects.values('failure').annotate(fcount=Count('failure'))
Out[13]: <QuerySet [{'failure': 'Bend Pin', 'fcount': 2}, {'failure': 'Winding Failure', 'fcount': 2}, {'failure': 'Degraded Capacitor', 'fcount': 2}]>

我尝试使用 Django 的序列化器对其进行序列化;

from django.core import serializers
serializers.serialize('json', records, fields('failure', 'fcount'))
AttributeError: 'dict' object has no attribute '_meta'

我知道我可以用 json.dumps 对记录进行序列化,但我想了解为什么 Django 的序列化程序会给我这个错误。 我在 Python 3.8.2 上运行。和 Django 3.0.5。

【问题讨论】:

    标签: json django serialization


    【解决方案1】:

    来自doc

    实际上,第二个参数可以是任何生成 Django 模型实例的迭代器,但它几乎总是QuerySet

    在您的情况下,records 是一个可迭代,但是,records 的内容不是 Django 模型实例,而是一个dict 对象

    In [13]: type(records)                                                                                                                                                                                             
    Out[13]: django.db.models.query.QuerySet
    
    In [14]: type(records[0])                                                                                                                                                                                          
    Out[14]: dict
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2014-08-08
      相关资源
      最近更新 更多