Django序列化为JSON

15

我有一个Django模型(schedule),它的类为entity,是Activity的父级,ActivityEvent的父级。

class Entity(models.Model):
    <...>

class Activity(models.Model):
    <...>
    team_entity = models.ForeignKey(Entity)
    <...>   

class Event(models.Model):
    <...>
    activity = models.ForeignKey(Activity)
    <...>

我该如何序列化并将子对象和孙子对象作为JSON文件的一部分获取?

6个回答

10

7

我现在使用django-piston。这可以解决问题。


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"
                }
            ]
        }
    ]
}

因此,保持父子孙关系(不是继承,而是一对多的关系遍历)。如果这不是初始帖子的意图,我很抱歉...但如果是,我也想知道答案。

6
具体来说,这应该如何实现? - S.Lott
是的,这正是我要找的。我需要一组实体,每个实体将拥有零到多个活动,每个活动将拥有零到多个事件。Steven - Steven H.
9
这不是一个答案,而是对问题的澄清。 - Seth Johnson

3
我相信你可以在这里找到答案:http://code.djangoproject.com/ticket/4656 这将成为Django序列化器的一部分。现在,只需用此替换标准的Django序列化器,即可正常工作。

3

谢谢,我上周看了那个。我可以得到一个实体列表、一个活动列表和一个事件列表,但是我丢失了父子关系。你有什么线索吗?我需要做什么? - Steven H.
umnik 是正确的。我没有意识到您没有在模型查询集上使用 select_related()。 - Sarat

-1

你可以用简单的两行代码来完成这个:

from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接