我有一个Django模型(计划),其中包含实体类,即Activity
的父级,即Event
的父级。
class Entity(models.Model):
<...>
class Activity(models.Model):
<...>
team_entity = models.ForeignKey(Entity)
<...>
class Event(models.Model):
<...>
activity = models.ForeignKey(Activity)
<...>
如何序列化并将子对象和孙子作为JSON文件的一部分?
答案 0 :(得分:10)
在进行序列化之前,在检索对象时,要保留关系,请使用select_related()来获取子孙,等等
请参阅http://docs.djangoproject.com/en/dev/ref/models/querysets/
答案 1 :(得分:7)
我现在使用django-piston。这样就可以了。
答案 2 :(得分:5)
在我看来,海报提出的问题是结果如下:
例如,从这些模型开始:
class Entity(models.Model):
name = models.CharField(...)
class Activity(models.Model):
name = models.CharField(...)
team_entity = models.ForeignKey(Entity)
class Event(models.Model):
name = models.CharField(...)
activity = models.ForeignKey(Activity)
结果为JSON:
{
"model": "Entity",
"name": "Dallas Cowboys",
"activities": [
{
"model": "Activity",
"name": "Practice"
},
{
"model": "Activity",
"name": "Game"
"events": [
{
"model": "Event",
"name": "vs Washington Redskins"
},
{
"model": "Event",
"name": "vs Green Bay Packers"
}
]
}
]
}
因此保留了亲子孙子女(不是遗产,而是一对多的关系遍历)。如果这不是最初海报的意图,我道歉......但如果是这样,我也希望得到答案。
答案 3 :(得分:3)
查看http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models
中提供的Django文档序列化继承的模型和对象这应该可以解决你的问题。
答案 4 :(得分:3)
我相信你可以在这里找到答案:http://code.djangoproject.com/ticket/4656
这将在某个阶段成为django序列化程序的一部分。现在它应该能够用这个替换标准的django序列化器,然后就可以了。
答案 5 :(得分:-1)
你可以用简单的两行代码完成这个:
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())