【问题标题】:How to mix serializers如何混合序列化程序
【发布时间】:2010-11-09 12:26:55
【问题描述】:

我需要在 django 中对大量数据进行 json 序列化,并且我需要同时使用 django.utils.simplejsondjango.core.serializers。问题是我不能混合它们。我需要这样的东西:

simplejson.dumps({
    'money': money.quantity,
    'items_left': item.quantity
    'transport': serializers.serialize([transport])
})

虽然这可能有效,但仍然存在一些问题:

  1. 我只需要使用[transport] 来序列化一个值。我仍然不明白为什么他们不能添加对序列化单个模型的支持
  2. response.transport 将是一个需要另一个 json 解码的 string

另外,如果有帮助,我正在使用 wadofstuff json 序列化模块。

我怎样才能使这种序列化不那么骇人听闻?

【问题讨论】:

    标签: python django json serialization


    【解决方案1】:

    在查询中使用.values() 以生成字典而不是模型实例,然后将该字典嵌套在外部字典中。

    【讨论】:

    • 虽然这将是一件很好的事情,可以完全解决我的问题,但我没有QuerySet,我只有一个模型实例。我可以只使用该模型创建一个 QuerySet 而无需再次查询数据库吗?
    • 很遗憾没有。解决此问题的另一种方法是与您关心的成员建立一个字典:dict((field, getattr(model, field)) for field in (field1, field2, ...))
    • 那会更糟,因为我没有稳定的规范(即没有规范),而且事情经常变化
    • 您可以在._meta 中四处寻找模型上的字段。我不记得确切的地方,但它应该是不言而喻的。
    • 太完美了!函数是instance._meta.get_all_field_names()。谢谢! (另外,如果其他人需要,请编辑您的答案)
    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多