python – Django继承模型的JSON序列化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django继承模型的JSON序列化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2617字,纯文字阅读大概需要4分钟。
内容图文
![python – Django继承模型的JSON序列化](/upload/InfoBanner/zyjiaocheng/812/931be4352c1246fb93da0a42ad68e9fd.jpg)
我有以下Django模型
class ConfigurationItem(models.Model):
path = models.CharField('Path', max_length=1024)
name = models.CharField('Name', max_length=1024, blank=True)
description = models.CharField('Description', max_length=1024, blank=True)
active = models.BooleanField('Active', default=True)
is_leaf = models.BooleanField('Is a Leaf item', default=True)
class Location(ConfigurationItem):
address = models.CharField(max_length=1024, blank=True)
phoneNumber = models.CharField(max_length=255, blank=True)
url = models.URLField(blank=True)
read_acl = models.ManyToManyField(Group, default=None)
write_acl = models.ManyToManyField(Group, default=None)
alert_group= models.EmailField(blank=True)
如果有帮助,完整的模型文件是here.
您可以看到Company是ConfigurationItem的子类.
我正在尝试使用django.core.serializers.serializer或WadofStuff序列化程序来使用JSON序列化.
两个序列化器给我同样的问题……
>>> from cmdb.models import *
>>> from django.core import serializers
>>> serializers.serialize('json', [ ConfigurationItem.objects.get(id=7)])
'[{"pk": 7, "model": "cmdb.configurationitem", "fields": {"is_leaf": true, "extension_attribute_10": "", "name": "", "date_modified": "2010-05-19 14:42:53", "extension_attribute_11": false, "extension_attribute_5": "", "extension_attribute_2": "", "extension_attribute_3": "", "extension_attribute_1": "", "extension_attribute_6": "", "extension_attribute_7": "", "extension_attribute_4": "", "date_created": "2010-05-19 14:42:53", "active": true, "path": "/Locations/London", "extension_attribute_8": "", "extension_attribute_9": "", "description": ""}}]'
>>> serializers.serialize('json', [ Location.objects.get(id=7)])
'[{"pk": 7, "model": "cmdb.location", "fields": {"write_acl": [], "url": "", "phoneNumber": "", "address": "", "read_acl": [], "alert_group": ""}}]'
>>>
问题是序列化公司模型只能给我直接与该模型相关联的字段,而不是它的父对象中的字段.
有没有办法改变这种行为,还是应该考虑构建一个对象字典并使用simplejson格式化输出?
提前致谢
?SM
解决方法:
这是对原始海报来说可能来得太晚的时代之一,但对于下一个Google员工可能会派上用场.
如果您需要更高级的序列化,我无法帮助您,但如果您只想要优雅地处理多表继承,那么要查看的位置是:Serializer基类的django / core / serializers / base.py.
在序列化方法中有一行:
for field in concrete_model._meta.local_fields:
Monkeypatching或overriding该类&用以下内容替换该行:
for field in concrete_model._meta.fields:
但是有一些需要注意的注意事项,请参阅Django Git repo& amp;中的提交12716794db.这两个问题:
https://code.djangoproject.com/ticket/7350
https://code.djangoproject.com/ticket/7202
长话短说,你可能应该小心在全球范围内这样做,尽管根据你的目标压倒这种行为可能会很好.
内容总结
以上是互联网集市为您收集整理的python – Django继承模型的JSON序列化全部内容,希望文章能够帮你解决python – Django继承模型的JSON序列化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。