我目前正在将 QuerySet 的结果放入我的 js 前端使用的 JSON 字符串中。
目前这很容易使用 .values() 和 simplejson:
simplejson.dumps(list(Task.objects.filter(list=mylist).values()))
我现在在我的 Task 对象中添加了一个 ManyToMany 字段,希望将它包含在我的输出中,而不需要为 ManyToMany 关系的每个值重复每个 Task 对象。
如果我只是这样做Task.objects.filter(list=mylist).values('myManyToManyField', 'someOtherField')
,输出将为每个值都有一个单独的对象/行myManyToManyField
[{'myManyToManyField': 1, 'someOtherField': 'valueOne'},
{'myManyToManyField': 2, 'someOtherField': 'valueOne'},
{'myManyToManyField': 1, 'someOtherField': 'valueTwo'}]
有没有办法得到这个结果?:
[{'myManyToManyField': [1,2], 'someOtherField': 'valueOne'},
{'myManyToManyField': 1, 'someOtherField': 'valueTwo'}]
我现在唯一的解决方案是遍历所有Task
对象并手动构建输出,根据需要将 ManyToMany 值放入其中。有一个更好的方法吗?如果不是 - 这会非常低效吗?