bas*_*kum 6 python django json django-models django-queryset
假设我有两个简单的模型:
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)
Run Code Online (Sandbox Code Playgroud)
我现在想做的是查询一组已解析位置的事件,并将所有内容转换为字典列表,稍后可以将其转换为 JSON。
最终结果应如下所示:
[{
"name": "event1",
"date": "date1",
"place": {
"name": "place1",
"address": "address1",
},
},{
"name": "event2",
"date": "date2",
"place": {
"name": "place2",
"address": "address2",
},
},]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试了我的运气ValueQuerySet和.values()方法:
Event.objects.all().select_related("place").values()
Run Code Online (Sandbox Code Playgroud)
但这是行不通的,因为.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",
}]
Run Code Online (Sandbox Code Playgroud)
如果绝对必要,您可以在 Python 中进行一些后处理以获得您想要的嵌套字典。
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |