Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-带有model_集的ModelSerializer_Python_Django_Django Serializer - Fatal编程技术网

Python Django-带有model_集的ModelSerializer

Python Django-带有model_集的ModelSerializer,python,django,django-serializer,Python,Django,Django Serializer,我有两个型号,一个是订单头,另一个是Orden细节 我想检索一个JSON,其中包含订单头及其详细信息。 我已经看到了“model\uuu set”函数,它检索所有标题的相关外部细节,但我不知道如何创建类似于上述结构的JSON 我的模特 class OrderHeader(models.Model): order_doc = models.CharField(...) client = models.CharField(...) ... class OrderDetail

我有两个型号,一个是订单头,另一个是Orden细节 我想检索一个JSON,其中包含订单头及其详细信息。 我已经看到了“
model\uuu set
”函数,它检索所有标题的相关外部细节,但我不知道如何创建类似于上述结构的JSON

我的模特

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
这个?

看看如何使用。您可以将您的
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)

更多详细信息,请参见文档

,但使用natural_键,我只能在一个字段中获得
def natural_键(self):
中指定的值(在本例中,
标题
字段是否正确?我需要获取所有标题字段和所有细节字段,但将标题的所有细节设置为标题内的数组。您给出的答案将返回类似:[{header:'1234',var1:'var1',var2:'var2'},{header:'1234',var1:'var1',var02:'var02'},].我错了吗?事实上我还没有彻底测试过。让我看看后再给你回复