我有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这样的查询?

最佳答案

看一下使用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)


文档中的更多详细信息

关于python - Django-具有model_set的ModelSerializer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30580745/

10-10 03:46