我有一个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()来获取子孙,等等

请参阅 http://docs.djangoproject.com/en/dev/ REF /模型/查询集/

在我看来,海报提出的问题是结果如下:

例如,从这些模型开始:

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())
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top