Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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-序列化多态模型_Python_Django - Fatal编程技术网

Python Django-序列化多态模型

Python Django-序列化多态模型,python,django,Python,Django,我想序列化一个多态模型,但只序列化他的基类型字段,而不是多态模型的基类型字段 models.py class Folder(PolymorphicMPTTModel): parent = PolymorphicTreeForeignKey('self', null=True, blank=True, related_name='children') name = models.CharField(max_length=50) class File(Folder): sr

我想序列化一个多态模型,但只序列化他的基类型字段,而不是多态模型的基类型字段

models.py

class Folder(PolymorphicMPTTModel):
    parent = PolymorphicTreeForeignKey('self', null=True, blank=True, related_name='children')
    name = models.CharField(max_length=50)

class File(Folder):
    srs_wkt = models.CharField(max_length=1000, blank=True, null=True)
views.py

from django.core import serializers
from django.core.serializers.json import DjangoJSONEncoder

file = File.objects.get(pk=1)
serialized = serializers.serialize('python', [file,])
response = json.dumps({'file':file}, cls=DjanJSONEncode)
return HttpResponse(response, content_type="application/json")
这就是我通常序列化模型对象并将其作为JSON发送的方式,但在这里,JSON对象只有srs_wkt字段,没有名称


有没有办法序列化多态模型?

原因是
文件夹
不是一个抽象模型,所以您有:

在大多数情况下,Django隐藏了将两个模型绑定在一起的底层
OneToOneField
,但序列化程序没有,请参见此处:

他们在上面的文档中为您的情况提供了一个解决方案,但这并不十分优雅,因此我建议尝试以下替代方案:

from django.core.serializers.json import DjangoJSONEncoder

def myview(request):
    file_dict = File.objects.filter(pk=1).values()[0]
    folder_dict = Folder.objects.filter(pk=file.folder.pk).values()[0]
    folder_dict.update(file_dict)
    response = json.dumps({'file': folder_dict}, cls=DjangoJSONEncoder)
    return HttpResponse(response, content_type="application/json")