Django - 在查询集对象内以dinamically方式赋值

时间:2015-12-03 15:52:16

标签: python django

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

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

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对象上不存在为字段。

我错过了什么吗?

谢谢!

:)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

我看到两个选项:

  1. 编写自定义序列化程序并使用
  2. 在查询集上使用.values()方法,并在其上使用json.dumps()
  3. 选项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可转换的字段(例如,对其他模型的引用),则可能会遇到错误。