【问题标题】:Python Django json serialisePython Django json 序列化
【发布时间】:2015-03-23 14:16:57
【问题描述】:

我有一个 mysql objects.filter,我试图将其序列化为 json。我的领域是 domain, generated_on, id, priority_mx, record, record_points_to, ttl

但是,在我像这样序列化数据之后

from getdata.models import record_search
query_data = record_search.objects.filter(**filter_kwargs).only("domain", "record", "record_points_to", "priority_mx", "ttl", "generated_on")
data = serializers.serialize(lang, query_data)

我的数据有一个额外的字段

model: "getdata.record_search"

我试图删除它,尝试将字段选择为

 data = serializers.serialize(lang, query_data, fields=('domain','record_points_to'))

model: "getdata.record_search" 仍然保留在我的序列化 json 数据中。排除这种情况的最佳方法是什么?

到目前为止,由于 serializers.serialize() 返回一个字符串,所以我这样做

return re.sub('\"model\"\:\s+?\"getdata\.record_search\"\,', "", data)

但我确信这是一种丑陋的做法。实现这一目标的 Pythonic 最佳方法是什么?

【问题讨论】:

    标签: python mysql json django serialization


    【解决方案1】:

    序列化用于模型的序列化/反序列化。没有这个“模型”字段,Django 无法反序列化模型。

    为什么要使用序列化?为什么不使用标准的 json 库?

    import json
    from getdata.models import record_search
    
    query_data = record_search.objects.filter(**filter_kwargs) \
                              .values("id", "domain", "record", "record_points_to",
                                      "priority_mx", "ttl", "generated_on")
    data = json.dumps(list(query_data))
    

    【讨论】:

    • 感谢 Catavaran。我使用序列化是因为,我通过一个查询字符串传递 json 或 xml 或 yaml,我将其传递给序列化,而不是编写单独的函数来实现这一点。看来我要使用你的解决方案了。
    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 2013-12-05
    • 2015-10-08
    • 2011-07-05
    • 2015-02-07
    • 2011-06-30
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多