【问题标题】:Django - assign value inside a queryset object dinamicallyDjango - 在查询集对象内动态分配值
【发布时间】:2015-12-04 00:22:03
【问题描述】:

我的函数从数据库读取数据并返回序列化的 JSON 数据,我需要在查询集中添加一个动态字段。

实际上,我在查询集中添加字段时遇到问题,代码如下:

def get_sim_list():
  t_sim = RD_sim_list.objects.all()
  for sim in t_sim :
    sim.sim_assigned = 1
  return serializers.serialize('json',t_sim)

当我得到结果值“sim_assigned”时,t_sim 对象上不存在作为字段。

我错过了什么吗?

谢谢!

:)

【问题讨论】:

    标签: python django


    【解决方案1】:

    我猜 django serializers 只翻译属于 django 模型对象的字段,但它不会获取任何不属于它的附加信息。因此,您可能需要使用 json.dumps 方法手动执行此操作。

    【讨论】:

      【解决方案2】:

      Django 提供的默认序列化器可能会内省模型并确定需要序列化的字段。如果您要添加自定义属性,则序列化程序可能无法识别它。

      我看到两个选项:

      1. 编写自定义序列化程序并使用它
      2. 在查询集上使用.values() 方法并在其上使用json.dumps()

      选项 2 的示例:

      import json
      t_sim = RD_sim_list.objects.values()
      for sim in t_sim :
          sim['sim_assigned'] = 1
      return json.dumps(t_sim)
      

      请注意,如果您的模型包含的字段的值不能立即转换为 JSON(例如,对其他模型的引用),您可能会遇到错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多