题
我有一个Django模型(schedule),其中包含实体类,即 Activity
的父代,它是 Event
的父代。
class Entity(models.Model):
<...>
class Activity(models.Model):
<...>
team_entity = models.ForeignKey(Entity)
<...>
class Event(models.Model):
<...>
activity = models.ForeignKey(Activity)
<...>
如何序列化并将子对象和孙子作为JSON文件的一部分?
解决方案 2
我现在使用django-piston。这样就可以了。
其他提示
在进行序列化之前,在检索对象时,要保留关系,请使用select_related()来获取子孙,等等
在我看来,海报提出的问题是结果如下:
例如,从这些模型开始:
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"
}
]
}
]
}
因此保留了亲子孙子女(不是遗产,而是一对多的关系遍历)。如果这不是最初海报的意图,我道歉......但如果是这样,我也希望得到答案。
我相信你可以在这里找到答案: http://code.djangoproject.com/ticket/ 4656
这将在某个阶段成为django序列化程序的一部分。现在它应该能够用这个替换标准的django序列化器,然后就可以了。
你可以用简单的两行代码完成这个:
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
不隶属于 StackOverflow