Django - ModelSset的ModelSerializer

时间:2015-06-01 18:35:51

标签: python django django-serializer

我有2个模型,一个是订单标题,另一个是Orden详细信息 我想检索一个包含Order Header的JSON,里面有详细信息。 我已经看到了“model__set”函数,它检索所有标题的相关外部细节,但我不知道如何制作类似于上述结构的JSON。

我的models.py

class OrderHeader(models.Model):
    order_doc = models.CharField(...)
    client = models.CharField(...)
    ...

class OrderDetail(models.Model):
    header = models.ForeignKey(OrderHeader)
    var1 = models.CharField(...)
    var2 = models.CharField(...)

我需要收到类似的内容:

[
    {
    order_doc:'1234',
    client:'Client Name',
    details:[
        {
            var1:'var1',
            var2:'var2'
        },
        {
            var1:'var01',
            var2:'var02'
        }
    ]
    },
    ...
]

如何编写序列化程序或查询json.dumps这个?

1 个答案:

答案 0 :(得分:1)

看一下使用natural keys。您可以将OrderHeader定义为:

class OrderHeader(models.Model):
    order_doc = models.CharField(...)
    client = models.CharField(...)

    def natural_key(self):
        return self.order_doc

在您的查询集中,您可以执行以下操作:

result = serializers.serialize("json", OrderDetail.objects.filter(header__id = pk), indent=2, use_natural_foreign_keys=True, use_natural_primary_keys=True)

文档中的更多详细信息