gpt4 book ai didi

django - 在具有ManyToMany字段的QuerySet上输出values()

转载 作者:行者123 更新时间:2023-12-04 02:25:22 25 4
gpt4 key购买 nike

我目前正在将QuerySet的结果放入JSON字符串中,以供我的js前端使用。

目前,使用.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值放入其中。有一个更好的方法吗?如果不是,这会导致效率低下吗?

最佳答案

您可以使用Django的序列化器:

import json
from django.core import serializers

json_data = serializers.serialize("json", Task.objects.all())


如果只想提取字段,请执行以下操作:

data = [i['fields'] for i in json.loads(json_data)]

关于django - 在具有ManyToMany字段的QuerySet上输出values(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com