[英]Django: convert QuerySet with related objects to JSON
假設我有兩個簡單的模型:
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的dicts列表。
這是最終結果的樣子:
[{
"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對象並自己進行轉換。
沒有默認的方法來創建您之后的嵌套dicts,但您可以選擇相關項的值:
# 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中進行一些后處理以獲得所需的嵌套字符串。
有一個名為model_to_dict
的相關方法:
from django.forms.models import model_to_dict
model_to_dict(instance, fields=[], exclude=[])
但它不會從相關模型創建dict字段。
這是你可以使用的片段:
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.