gpt4 book ai didi

python - Django:将带有相关对象的QuerySet转换为JSON

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:50 25 4
gpt4 key购买 nike

假设我有两个简单的模型:

class Place(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200)

class Event(models.Model):
name = models.CharField(max_length=200)
date = models.DateField()
place = models.ForeignKey(Place)

我现在想做的是查询一组具有已解析位置的事件,并将所有内容转换为字典列表,稍后可以将其转换为 JSON。

最终结果应该是这样的:

[{
"name": "event1",
"date": "date1",
"place": {
"name": "place1",
"address": "address1",
},
},{
"name": "event2",
"date": "date2",
"place": {
"name": "place2",
"address": "address2",
},
},]

到目前为止,我用 ValueQuerySet.values() 方法试试运气:

Event.objects.all().select_related("place").values()

但是这不会起作用,因为 .values() 只返回相关对象的 ID 而不是内容。所以我想知道是否有另一种内置方法来进行这种转换,或者我是否必须迭代 QuerySet 对象并自己进行转换。

最佳答案

没有默认的方法来创建你想要的嵌套字典,但你可以选择相关项的值:

# No need for select_related in this case
Event.objects.values('name', 'date', 'place__name', 'place__address')

[{
"name": "event1",
"date": "date1",
"place__name": "place1",
"place__address": "address1",
},{
"name": "event2",
"date": "date2",
"place__name": "place2",
"place__address": "address2",
}]

如果绝对必要,您可以在 Python 中进行一些后处理以获得您想要的嵌套字典。

关于python - Django:将带有相关对象的QuerySet转换为JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146905/

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