django 模型序列化 [英] django model serialization

查看:79
本文介绍了django 模型序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想序列化模型:

class Schedule(models.Model):标题 = models.CharField(max_length=512)类 ScheduleEvent1(models.Model):ScheduleContent = models.ForeignKey(Schedule)描述 = models.TextField()类 ScheduleEvent2(models.Model):ScheduleContent = models.ForeignKey(Schedule)AnotherField = models.TextField()ShortDescription = models.TextField()

serializers.serialize('json', Schedule.objects.all())

结果喜欢

<预><代码>[{pk":2,"model": "时间表",领域":{"Title": "一些标题",计划事件1":[{PK":19,"model": "ScheduleEvent1",领域":{"Description": "一些描述",}},{pk":20,"model": "ScheduleEvent1",领域":{"Description": "一些 Descr2222",}}],计划事件2":[{PK":15,"model": "ScheduleEvent2",领域":{"AnotherField": "一些文字","ShortDescription": "一些文字...",}}]}}

]

总的来说.我有实体树.我需要从根序列化这棵树.

tnx 寻求帮助.

解决方案

http://docs.djangoproject.com/en/1.3/topics/serialization/#dependencies-during-serialization

涵盖了这一点的本质.结果文件不是确切所需要的,因为对象不会被嵌套.然而,这是 Django 默认生成的,也是 Django 用于反序列化的.

如果您使用 Piston,您可以轻松定义一个处理程序将生成嵌套的 JSON,但它不会精确如图所示,因为 Piston 的 JSON 发射器不是 Django 格式.

获得准确所期望的结果会导致扩展 Django 序列化程序以生成嵌套的 JSON 对象作为自然键.请参阅 http://code.djangoproject.com/browser/django/trunk/django/core/serializers/python.py.第 47-59 行

或者,您可以定义一个 natural_key 方法,该方法使用 Django 的 'django.core.serializers.json .Serializer` 来发出对象的 JSON 序列化,而不是其他一些自然键值.这在语义上有点奇怪,但它可能会做你想要的.

I want to serialize models so:

class Schedule(models.Model):
   Title = models.CharField(max_length=512)

class ScheduleEvent1(models.Model):
   ScheduleContent = models.ForeignKey(Schedule)
   Description = models.TextField()

class ScheduleEvent2(models.Model):
   ScheduleContent = models.ForeignKey(Schedule)
   AnotherField = models.TextField()
   ShortDescription = models.TextField()

make smth like serializers.serialize('json', Schedule.objects.all())

The result likes

[
{
    "pk": 2,
    "model": "Schedule",
    "fields": {
        "Title": "Some Title",
        "ScheduleEvent1": [
            {
                "pk": 19,
                "model": "ScheduleEvent1",
                "fields": {
                    "Description": "Some Descr",
                }
            },
            {
                "pk": 20,
                "model": "ScheduleEvent1",
                "fields": {
                    "Description": "Some Descr2222",
                }
            }
        ],
        "ScheduleEvent2": [
            {
                "pk": 15,
                "model": "ScheduleEvent2",
                "fields": {
                    "AnotherField": "Some text",
                    "ShortDescription" : "Some text ...",
                }
            }
        ]
    }
}

]

In general. I have entity tree. And I need serialize this tree from root.

tnx for help.

解决方案

http://docs.djangoproject.com/en/1.3/topics/serialization/#dependencies-during-serialization

Covers the essence of this. The resulting file is not precisely what's required, since the objects won't be nested. However it is what Django produces by default and it's what Django will use for deserialization.

If you use Piston you can easily define a Handler which will produce nested JSON, but it won't be precisely as shown because Piston's JSON emitter isn't precisely in the Django format.

Getting to precisely what's hoped-for leads to extending the Django serializer to produce a nested JSON object as the natural key. See http://code.djangoproject.com/browser/django/trunk/django/core/serializers/python.py. Lines 47-59

Or, you can define a natural_key method which uses Django's 'django.core.serializers.json .Serializer` to emit the JSON serialization of the object instead of some other natural key value. This is a little weird semantically, but it may do what you want.

这篇关于django 模型序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆